Guild icon
swift-developers-japan
開発環境, ライブラリ / ios
Avatar
iOS11b7 b6よりも不安定かも…。 b6ではフリーズとかしなかったのに、b7でホーム画面で操作が効かなくなる現象起きた。 コントロールセンターと通知センターの表示できるけど、アプリ起動やホーム画面2ページ目とかAppSwitcherが効かなくなった。 ->とりあえず再起動で直った
Avatar
iOS10でも結構フリーズ起きません?
Avatar
iPhone6sとiPad Pro(9.7)で使ってた限りでは無かったと思いますん🤔
Avatar
iOS11 b8がリリースされた模様。 なお、Xcode9は、b6のまま…😂
Avatar
beta9がiOSとtvOSで出ましたね 結構スパン短くなって来ましたか…
Avatar
omochimetaru 9/1/2017 1:24 AM
xcodeまだbeta6だ
Avatar
イベント日発表されましたし、Xcode含めGMはよ来て…
Avatar
omochimetaru 9/1/2017 2:27 AM
たしかに。
Avatar
今 iOS 11 用アプリ開発中だからまだ来ないでほしいw
Avatar
3日間隔ほど短いのはイレギュラーですね。 GM版は大抵新型iPhone発表日(今年は9/12)で、その1週間くらい後に正式版リリースというのが例年の流れだった気がします。 あと、iOSでbeta 9まで行ったのは過去最長かもです 🤔 参考に去年の流れ: http://tools4hack.santalab.me/ios10-gm-release.html
6月14日より開始されたiOS 10ベータテストですが、先ほどついに【iOS 10 GM】がリリースされました!正式リリース日も発表され、それに向けての最終版となります。
Avatar
お、じゃあまだ GM まで少し余裕ありそうですね。
🤓 1
Avatar
そういえば、iOS11でTwitterとかFacebookのアカウント設定項目が消えてる!って一時小さく騒ぎがあった気がしますが、あれは結局そういう仕様なんですかね?
Avatar
そういう認識ですが、Twitterインストールしてても共有時にアラート出るままなのは謎です🤔(Facebookは当初から出てない) http://qiita.com/tatetate55/items/6e72b0d8e4389f588871
social.frameworkを使用してtwitterやfacebookのボタンを設定しているところはシェアができなくなります。 depracatedで後ほど使えなくなるという訳ではなく、iOS11端末かつtwitterもfa...
Avatar
norio_nomura 9/1/2017 3:20 AM
Facebookのカレンダーとかそのまま残ってて、アカウント設定消えてるからカレンダーを消せなかったりする。まあ問題はないのだけど。
🤔 1
Avatar
GM版から正式版って確かアップデートできませんでしたよね?
Avatar
GM->正式版は確かビルドナンバーが同じである限りできないと思います(モノに差異がないので)
👌 1
Avatar
iOS11 beta10はくるのにXcodeはbeta7来ないとか😭
Avatar
この分だと次は GM ?
Avatar
omochimetaru 9/7/2017 1:10 AM
iOSかなり数字伸びましたね
Avatar
明日滑り込みとかもあり得なくは無さそうですが、12日のGMな気がしますね🤔
Avatar
iOS 11 beta 10 にアップデートしても Xcode 9 beta 6 で実行可能なんでしょうか?
Avatar
できます👌
Avatar
ありがとうございます😀
Avatar
逆にXcode 8でiOS 11上で実行する時は、Xcode 9からイメージコピーしてくる必要ありますが。
Avatar
おお、そっちは盲点でした・・・。
Avatar
I want to use Xcode 7 with iOS 10. As I understand, working with iOS 10 beta requires Xcode 8 beta, so I should upgrade my Xcode. However, my code can't be built by the new compiler, so I want to ...
😍 2
1:24 AM
ちょっとバージョン違いますが、iOS β版使うときの毎年の儀式です( ´・‿・`)
Avatar
Xcode9のGM版、iOS11のシミュレーターでコントロールセンターが開けない…?
Avatar
右上隅を下にスワイプです
4:33 AM
コントロールセンター開く要領で右上です
Avatar
正直なぜ下をForce TouchでHOMEに戻る仕様にしなかったのか謎です
Avatar
iPadのiOS 11だと下からスワイプでコントロールセンターとアプリスイッチが合体したやつが出てて、それは直感的でしたが、iPhone Xは初め分かりにくいですね
Avatar
force touchそのうち無くなると読んでる
😩 1
Avatar
なくなりそう、iPad未だに搭載してないし
4:35 AM
というかiPhone Xそもそもtaptic engineあるん?
Avatar
iPhoneX以外のiPhoneでもコントロールセンター開こうとすると画面がぼやけるだけで開けない🤔
Avatar
多分開くこと自体は成功していて、アイテムが無いだけなのかなと
Avatar
なるほど
Avatar
iPhone Xの仕様ページ探してもTapticのTaの字もない
Avatar
8だとあります?
Avatar
まあ8のページにもないから本当わからないんですよね
Avatar
7はどうでしょう?なくないですかね?
Avatar
7もないですね
4:40 AM
https://smhn.info/201709-apple-iphone-x-matome smhnによるとあるらしい
Appleは日本時間9月13日午前2時から、米クパチーノの新本社にて、スペシャルイベント「Let’s meet at our place」を開催。従来モデル後継機の「iPhone 8 / 8 Plus」とともに、新型フラッグシップスマートフォン「iPhone X(アイフォーン テ...
Avatar
当たり前のように付いている、みたいな扱いなのかなと捉えてました
4:41 AM
でも、その記事はどこで判断したのかは気になります 🤔
Avatar
私、気になります!(アイコン風
4:43 AM
Control Centerも長押しでForce Touchと同じ扱いになりますしね
4:44 AM
というかみんなが望んでるのはMacBookのTrack PadのようなフィードバックがあるForce Touchだからな…今のiPhoneのTaptic Engineだと貧弱すぎて全然ボタン押してる感がなくてクソい
4:46 AM
あ、iPhone XのページにTaptic Engineは書いてないけど3D Touchはちゃんと書いてる、ならばありますねやっぱ(ならなんで下をForce Touchの仕様にしないんだよクソが!
👀 1
4:46 AM
徹底的に生まれ変わった新しいiPhone Xは、オールスクリーンディスプレイとA11 Bionicを備えています。仕上げ、容量、サイズと重量、ディスプレイ、チップ、カメラシステム、バッテリー駆動時間、オペレーティングシステム、内蔵アプリケーションなど。iPhone Xの詳しい仕様と新機能をご覧ください。
4:48 AM
@2xはRetina Display、@2.4xはRetina HD Display、@3xはSuper Retina HD Display、さて@4xの時はどうなるんだろ?Hyperを使うのかUltraを使うのか
Avatar
@2.4x ってPlusのこと指してます?
Avatar
Plusです
Avatar
iPhone 7 (@2x)でもRetina HDなので、密度で変わっている訳ではなさそうです。 https://www.apple.com/jp/iphone-7/specs/
これが、7。かつてないほど進化したiPhoneです。仕上げ、容量、サイズと重量、ディスプレイ、チップ、カメラシステム、バッテリー駆動時間、オペレーティングシステム、内蔵アプリケーションなど。iPhone 7とiPhone 7 Plusの詳しい仕様と新機能をご覧ください。
Avatar
素材は@3xですが実質画面表示は@2.4なので
4:52 AM
7でもRetina HDでしたか 🤔
Avatar
今回は良い感じの有機ELディスプレイ(発表で比較表がありました)で、Super Retinaと読んでいる感じでした
Avatar
HDは一体何を指しているのか 🤔
4:53 AM
なるほど
4:56 AM
つまりppiが高いからRetina、True ToneがあるからHD、そして有機ELだからSuper、という感じの羅列になるわけですかね?
Avatar
そんな気がしますね 🤔
Avatar
いずれは「プリキュアスイートセッションアンサンブルクレッシェンドフィナーレ」みたいな名前になりそう(小並感
Avatar
あ、iPhone 6からRetina HDだったようなのでTrue Tone区切りではなさそうです。
5:00 AM
iPhone 6 と iPhone 6 Plus の液晶ディスプレイを詳しく紹介します。(画像:Apple)一番最初に気付くのは、サイズです。iPhone 5s/5c は4インチ液晶を搭載していました
5:01 AM
iMacは普通のRetinaですね https://www.apple.com/jp/imac/specs/
解像度、高さ、重量、容量など、2つのサイズのiMacの仕様をご覧ください。
Avatar
iPhone Xのシミュレータ、通知センター開いた時下が「Press」 home to openってなってるけどどゆこと??バグ?仕様?
🤔 1
Avatar
ハンズオン動画見たら、Swipe up to unlock になってますね。
5:26 AM
シミュレーターのバグですかね
Avatar
つまりこれはGM2が来る流れですかね(多分来ない
Avatar
Deleted User 9/13/2017 5:27 AM
Siriの設定画面もPress Home for Siriになってますね
Avatar
というか unlock なんですね
5:27 AM
Swipe up to open なような 🤔
Avatar
あ、コレスリープ画面じゃなくて通知センター画面です
5:28 AM
スリープ画面なら多分Unlockで合ってるはずかと
5:28 AM
と思ったらシミュレーターはスリープ画面もopenだった 😇
Avatar
はい、ほとんど同じなんですよね、iOS 11だと
Avatar
ロックしてるかしてないかの区別はあるはずだと思ったのですが、シミュレーターの場合ロック画面でもデフォルトでFace IDによるロック解除済みの状態ですかね?
Avatar
指紋認証解除した状態だと Press home to open なので、手に持って顔認証解除した状態だと Swipe up to open じゃないかなと思った次第でした。 (edited)
Avatar
なるほど、確かにシミュレーターはパスコードとか設定してないしね 🤔
Avatar
ハンズオン動画見たら、Swipe up to unlock になってますね。
この時点では本当にロックかかってて、Swipe操作と同時に顔認証アンロックかかっているのかもですが(それなら文言もしっくり)。
5:31 AM
Engadget 日本版 YouTubeチャンネルより。アップル新製品発表会会場から、iPhone X, Apple Watch series 3, iPhone 8のハンズオン動画をどうぞ! 撮影はACCN編集長。
Avatar
謎のPress
5:33 AM
Force Touch対応のMacBook Proは私物で家に置いてるのまじつらい
5:33 AM
誰か試してーTrackPadのForce Touchでロック解除できるかどうか(他力本願
Avatar
@2.4x ってPlusのこと指してます?
なんか違うような気がしつつ僕の計算の仕方がおかしいのかなと思ってましたが、Plusは2.6xが正しそうです。 https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/Displays/Displays.html#//apple_ref/doc/uid/TP40013599-CH108-SW6
Avatar
ああ2.6でしたね、覚え間違いました 😇
👌 1
6:12 AM
(人間が覚えられない解像度に人間が覚えられないスケールを平気で作ってしまうアップルが悪いんだよ!!!!!!!!(藤原竜也風
👊 2
Avatar
iOS11でスクリーンの動画キャプチャできるやつ、「どこをタップしたか」も含めて録画できるかどうか分かる方いますか?
Avatar
シミュレータだったら○が描画されるからわかるよ 実機はしらない
Avatar
iOS11とXcode9がリリースされたー!NDA解禁だー!
👍 7
Avatar
fastlaneにてfastlane betaするとXcode9でコケる問題、Fastfileに下のオプション付けると問題が解消されるみたいですね export_xcargs: "-allowProvisioningUpdates" https://github.com/fastlane/fastlane/issues/9589
New Issue Checklist Updated fastlane to the latest version I have read the Contribution Guidelines Issue Description Extension of #9458 Project builds but come export for ad-hoc or release. I g...
👀 2
4:48 AM
Xcode9からデフォルトで有効にしておけばってPRは立ってるもののマージされてない模様 https://github.com/fastlane/fastlane/pull/10345
Avatar
Action ExtensionからLivePhotoにアクセスしたくて調べたら、まっとうな方法ではアクセスできないらしい事を知った。 https://openradar.appspot.com/29924331
4:35 AM
iOS 9.1のリリースノートには If you have a sharing extension, you can also get `PHLivePhoto` objects by using `NSItemProvider`. とあるけど、実際にはできない。iOS 9.1リリース時点では出来たのか不明。 https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9_1.html
Avatar
URLSessionをプロキシ越しに使うとお漏らしする・・・・・
7:44 AM
もうちょっとで再現手順作るので,お時間ある人,助けてください.
Avatar
これかもしれない
Avatar
You will, alas, just have to wait for NSURLSession engineering to fix them.
身も蓋もないw
Avatar
再現性コードいらんなぁ.
12:17 AM
とりあえず,バグレポートを僕も書いておくか
Avatar
daisukeokaoss 10/28/2017 5:29 AM
self.dissmissLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) self.dissmissLabel.font = UIFont(name: "Bold", size: 100) self.dissmissLabel.text = "×" (edited)
5:30 AM
これで、fontのサイズが指定できるかなと思ったら、サイズが指定できてないみたいなので、わかる人いらっしゃいますか?
Avatar
フォント名の Bold が変なような?
Avatar
Kishikawa Katsumi 10/28/2017 5:49 AM
UIFont(name: "Bold", size: 100)nil が返って、何も指定しないデフォルトになってるんじゃないですかね。
5:49 AM
原因はおもちさんがおっしゃってるようにフォント名だと思います。
Avatar
daisukeokaoss 10/28/2017 5:49 AM
お、ありがとうございます
5:50 AM
self.dissmissLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) self.dissmissLabel.font = UIFont(name: "HiraginoSans-W3", size: 100) self.dissmissLabel.text = "×" これで、サイズ指定できました
5:51 AM
フォントnilでも、表示はされるんですね
Avatar
Kishikawa Katsumi 10/28/2017 5:53 AM
nilの場合はデフォルトの17ポイントのシステムフォントになります。それかattributedTextでスタイルとともにテキストを指定している場合はそっちが優先。 (edited)
Avatar
daisukeokaoss 10/28/2017 5:54 AM
なるほどー
Avatar
フォントサイズ変えたいだけならこれでもいけますねー self.dissmissLabel.font = UIFont.boldSystemFont(ofSize: 100) or self.dissmissLabel.font = UIFont.systemFont(ofSize: 100) (edited)
Avatar
daisukeokaoss 10/28/2017 6:09 AM
なるほどー。
Avatar
新規プロジェクトでStoryboardでUITextFieldを置いてアプリを実行、UITextFieldに「こんにちはこんにちはこんにちは」と入力してから任意のテキスト内の位置をタップしても「こんにちは」の単語区切りの所にしかカーソルが移動しないという現象が発生しています。これはOSのバグでしょうか?それともなにか設定を変更すれば挙動が変るのでしょうか?
Avatar
Kishikawa Katsumi 11/22/2017 7:22 AM
なるほど、挙動が変わったんでしょうかねえ。
7:28 AM
iOS 10でも同じで日本語かどうかも関係なさそうなので、意図した挙動っぽいですねえ。
7:29 AM
挙動を変える方法はいくつか思いつくけど簡単な方法はなさそうですね。
Avatar
@Kishikawa Katsumi ありがとうございます。そうなると意図的な可能性が高そうですね。簡単には変えられないとテスターに伝えようと思います。
Avatar
本当だ・・・公式のツイッターアプリとかでもそうなりますね。
Avatar
Kishikawa Katsumi 11/22/2017 7:35 AM
たぶんカスタムのUITextInputTokenizerを返すようにしたら変えられるんじゃないかと思ってるんですけど、あまり簡単ではないです。 https://developer.apple.com/documentation/uikit/uitextinput/1614537-tokenizer
Avatar
うへぇw
Avatar
えぇぇと、広告はありませんが、作ったものを投稿してもいいんですか?
Avatar
基本的に良いのではないかと🤗どのチャンネルが適しているかは微妙ですね🤔
👍 1
Avatar
#random がなくて #zatsu がある
2:03 AM
ライブラリなら #swift-zatsu アプリなら #zatsu とかいい塩梅ではないでしょうか
👍 2
Avatar
#zatsu ですね ありがとうございます 😃
Avatar
よし冬コミで出す予定のAuto Layout殺す本もできたら宣伝します😆
👀 6
Avatar

Interface Builderの問題点

iOSアプリを開発する限り付き合わなければいけないInterface Builder。 視覚的にViewの構造を確認できる便利な代物ですが、人類が扱うには少々厳しいポイントがいくつか...
🙏 1
2:33 AM
@Yuta Saito 良いね
Avatar
ありがとうございます! 🙌
2:35 AM
ルール少ないのでPRください
Avatar
わーい!Yamsが使われてる!🙌
👓 1
Avatar
もしご存知の方がいらっしゃいましたら教えて欲しいです。 https://medium.com/@r.izumita/carthageでstatic-frameworkとしてビルドしてiosアプリの起動時間を短縮する-ca10a0a29381 この記事で触れている起動時間の問題って Cocoapods で ‘use_frameworks!’ 指定している場合でも発生し得るのでしょうか。
Carthageを利用してダイナミックフレームワークを追加していくといつの間にかiOSアプリの起動に時間がかかるようになっていきます。Appleは多くとも6つのダイナミックフレームワークにすることを推奨しています。しかしどうしても多くなって起動時間が遅くなってきます。この長く…
Avatar
考えたことなかった
6:46 AM
仕組みとしてはuse_frameworks!でDynamic Frameworkになるので同じことが起きそうですね
6:46 AM
CocoaPods久しく使ってないけど、use_frameworksで生成されるのって1個にまとまったフレームワークなんでしたっけ
Avatar
Podsなんとか.dylibみたいなのができてませんでしたっけ。1個にまとまるような?
Avatar
まとまるか
Avatar
まとまらないです
😰 1
Avatar
まとまらないか
Avatar
まとまらないのか
Avatar
ふつうにFrameworks下にpod名のframeworkがならびます
6:48 AM
のでおなじことになるのではないかなぁと思う
6:52 AM
frameworkの起動時間の問題、キャッシュにのっている場合は無視できるからそれほどでもない、ってごく最近どこかで読んだような‥?
7:02 AM
この問題が特に顕著なのは、端末再起動・アプリをしばらく使っていないなどでモジュールのキャッシュがクリアされてしまっている時の起動時間であり、常用しているアプリを再起動する時などは大抵モジュールのキャッシュが効いているためこの影響は少なく特に遅く感じません。
7:03 AM
monoさんだった
👀 1
Avatar
元の @rizumita さんの記事では、1回目の起動時間を掲載しているのか、それとも、2回目移行のキャッシュが効いてる状況でも差があるのか、そのあたりが気になった
Avatar
モジュールのキャッシュというのもあるのか、なるほど
7:07 AM
それがあるのは知らなかった
Avatar
AppleとしてはDynamic Framework は6つくらいまでにしといてという見解でしたよね。。
Avatar
UIAppearance経由で設定したもろもろのパラメーターが個別のインスタンスにいつ適用されるかがドキュメントになさそうなんですが、詳しい方いませんか?
3:09 PM
IBOutletのdidSetでUILabelのtextColorを変えているんですが、AppDelegateでUILabel.appearance().textColorをいじるとそっちが優先されてしまってこまっています
3:12 PM
iOS applies appearance changes when a view enters a window, it doesn’t change the appearance of a view that’s already in a window. To change the appearance of a view that’s currently in a window, remove the view from the view hierarchy and then put it back.
3:12 PM
それっぽいこと書いてあった。
3:13 PM
つまりIBOutletの初期化が終わってdidSetが動いても、そのあと実際に画面に表示される直前にUIAppearanceが適用されるのでうわがかれて当然って感じかなあ
Avatar
Kishikawa Katsumi 12/31/2017 3:13 PM
そこにある通り、ドキュメントではWindowにAttachされたときでテーマ切り替えのような動的に切り替える用途には向かない、とあるのですが、途中で切り替えても結構動作するので正式なところは難しいですね。
Avatar
共通化したいところはUIAppearanceで共通化しつつ、個別にいじるところは上書き、ってするためのUIAppearanceだと思ってたので、ずっこけたという感じです
3:16 PM
岸川さんありがとうございます〜
Avatar
Kishikawa Katsumi 12/31/2017 3:18 PM
おそらく、基本的にはWindowにAttachされたときだから再適用する場合はビューを外してから貼り直すようにしなさい、っていうのは合ってるんだろうけど、実装の都合上、実際は貼り直さなくても適用されることが結構ある、って感じだと思います。 (edited)
Avatar
Windowにアタッチされる前に設定してた局所的な設定を大局的な共通化でうわがきしてしまうのはどうなんーという気がします
Avatar
UILabelのデフォルトの色を一括で変えるいい方法ないでしょうかねー
Avatar
Kishikawa Katsumi 12/31/2017 3:35 PM
色を設定するファクトリメソッドのようなものを使うとかじゃないですかね。
3:35 PM
あんまりいい方法ないです。サブクラスを作るっていうのをよく見ますけどあまりいい方法じゃないと思います。
Avatar
ファクトリーメソッドだとIBOutletなUILabelには当てられないですよねえ
Avatar
Kishikawa Katsumi 12/31/2017 3:36 PM
ああ、そうですよね。
Avatar
個人のプロジェクトで、絶対に他の目的で使わないという強い気持ちが保てればサブクラス化してもいいかなーみたいな気分です
3:37 PM
薄い継承よりも色の設定漏れのほうが嫌ですね
3:38 PM
UILabelのextension内でwillMoveToSuperviewみたいなのをオーバーライドしてtextColorがnilだったらデフォルトの色を設定するみたいなのできるかな
3:38 PM
今思いついたので試してみます
3:41 PM
label.textColorが UIColor! だったからいけるかなーと思ったけどwillMoveToSuperviewの時点でデフォの値が入ってるっぽくて頓挫
3:42 PM
extension UILabel { open override func willMove(toSuperview newSuperview: UIView?) { if textColor == .black { textColor = UIColor.red } super.willMove(toSuperview: newSuperview) } }
3:43 PM
これで一応全部赤く出来たけど今度は明示的に黒にできなくなってしまったのでダメですね。
Avatar
UILabel直にappearance使うの危ないしサブクラス化してから使った方がいいのでは?と思った
Avatar
Kishikawa Katsumi 1/1/2018 2:00 AM
私は適当にユーティリティメソッドにまとめてviewDidLoadあたりで適宜呼び出すのがいいと思います。
Avatar
@tarunon 危ないってどういう危ないだろう?
Avatar
didSetも含め予期せぬ挙動になるから
2:17 AM
例えば使ってるライブラリがUITextViewのプレースホルダーにUILabelを使っていると…とか
2:17 AM
ハマりどころは枚挙に暇がない
Avatar
Kishikawa Katsumi 1/1/2018 2:18 AM
ああ、それもありますね。サードパーティのライブラリじゃなくても標準コンポーネントに影響が出たり。
Avatar
なるほど。
Avatar
手元の iPhone で確認してみましたが、 iOS 10時代に位置情報を"常に許可"にしたアプリは iOS 11に上げた今でも"常に許可"になっていたので、 常に取得できるものと思われます(ちゃんと検証はしてません 🙏
Avatar
@koogawa ありがとうございます! (たぶん誰もわからんだろうと、思って質問文消してしまいました😥
👌 1
Avatar
omochimetaru 1/16/2018 2:51 AM
SceneKitのSCNViewのデバッグ機能すごい
2:52 AM
SceneKit良く出来てるけどAndroidで動かないし
2:53 AM
HoloLensのリリースにあたってUnity連携を公式サポートしたMicrosoftの筋が良すぎる
2:53 AM
Appleもそうしてくれたらもう全て解決だったのになあ
2:53 AM
まあUnity連携だと環境がサンドボックスされすぎるという問題はあるんだけど。。
2:54 AM
AppleがSceneKitをAndroid向けに展開するモチベーションあってもいいと思う
2:54 AM
それやらんと誰もついてこないでしょコレ
2:54 AM
せっかく良く出来てるのに。
Avatar
エンジニアリング的には正しいけどよく考えたら MS はあれどこでビジネスしてるんだろ
Avatar
omochimetaru 1/16/2018 2:54 AM
MSはプラットフォーマーでしょ。
Avatar
Win MR のライセンスが儲かるのか?WIndows 自体ってまだ稼ぎ頭なんだっけ? (edited)
Avatar
omochimetaru 1/16/2018 2:54 AM
HoloLensおよびWinMRの展開自体が投資でグラフィックエンジン部分なんてどうでもいいでそゆ
Avatar
Apple が Android 向け SceneKit 作るメリットなくない?
Avatar
omochimetaru 1/16/2018 2:55 AM
@koher SceneKitが採用できる
2:55 AM
モバイルゲームビジネスでみんな考えてるのはいかにマーケット広く取るかなんでAndroid全滅の時点でありえない選択肢になる
Avatar
SceneKit が採用されることの利点は?
Avatar
omochimetaru 1/16/2018 2:56 AM
@Biacco42 というよりMSはいまWindowsが死なないために必死なのでは
Avatar
抱え込みたいけど使われない、の時点で Apple 的には SceneKit に投資せずに作らない、が正解に見えてしまう
Avatar
omochimetaru 1/16/2018 2:56 AM
@koher わかんないです、でも作ったならなんか目的があるのでは。
Avatar
目的は Apple プラットフォームだと簡単に 3D アプリ作れますよってことじゃないかなぁ。
Avatar
@omochimetaru MS もうソリューション系というかクラウドとかバックエンド系が稼ぎ頭になってた気がしたけどどうだったかな
Avatar
omochimetaru 1/16/2018 2:57 AM
目的は Apple プラットフォームだと簡単に 3D アプリ作れますよってことじゃないかなぁ。
さすがに現実味がなさすぎる・・・Unityで解決してるしUnityのほうが動くデバイスが多い。
Avatar
まさに↓の状態になってるかも・・・
抱え込みたいけど使われない、の時点で Apple 的には SceneKit に投資せずに作らない、が正解に見えてしまう
Avatar
ある企業の行動原理を知りたければ、金銭の流れを追えばいい。3大IT企業であるグーグル、マイクロソフト、アップルの決算を分析して、どの製品からどれだけの収益を上げているかを明らかにする。
2:57 AM
ちょっと古いけど
Avatar
Kishikawa Katsumi 1/16/2018 2:57 AM
SceneKitとSpriteKitは最初からよくわからなかったですね。
Avatar
omochimetaru 1/16/2018 2:58 AM
うん、現状は「よくわからん」・・・
Avatar
Kishikawa Katsumi 1/16/2018 2:58 AM
入門としてはいいと思うんですけど、それを超えると意味はないので。
Avatar
でも、たとえば ARKit が出たときに簡単に試すには SceneKit 使ったら楽だねとなるし、
Avatar
Kishikawa Katsumi 1/16/2018 2:58 AM
そう、入門以上に使うところがない。
2:58 AM
ゲーム以外のものを作る場合は別かな。
Avatar
それ単体ではなくて、今後 Apple の 3D 的な何かと簡単に組み合わせられるものとして
2:59 AM
基盤的な意味合いはあるのかも。
Avatar
omochimetaru 1/16/2018 2:59 AM
ARKitもそうだけど「ARkitがあるからiOS向けに作ろう」じゃなくて、 GoogleもARCore出してきたわけだし 「どうやってiOS/Android両対応しよう」って悩みがより重くなってしまっただけ
3:00 AM
結果的に高コストなんでそのジャンルのアプリ開発投資が重くなってるだけのような・・・
Avatar
Kishikawa Katsumi 1/16/2018 3:00 AM
それはあると思います。われわれと違ってAppleの立場としては基盤テクノロジーの応用例の1つに過ぎないので。
Avatar
omochimetaru 1/16/2018 3:00 AM
割り切ってiOSだけでいこうぜ!ってマーケットが流れる方向をAppleが全力で信じているんだろうか
Avatar
そこで、 Android より iOS の方が簡単に作れるし、(日本みたいに iOS シェア大きかったら)とりあえず iOS アプリ作ろう
3:01 AM
ってなる可能性があるのでは?
Avatar
omochimetaru 1/16/2018 3:01 AM
iPhoneとAndroidが価格帯でも住み別れてしまったので
3:01 AM
相互乗り換えにならないのがなあ。
Avatar
それ単体では効果は薄くても、そういうものを積み重ねることでじわじわ利いてくるのかも。
Avatar
omochimetaru 1/16/2018 3:01 AM
うーむ・・・ > じわじわ
Avatar
norio_nomura 1/16/2018 3:02 AM
Apple自身が使うために作ってるだけでは。
👀 1
Avatar
Apple がウェアラブルデバイスと arOS 出すとかいう噂もあるし、そういう展開を見据えると SceneKit なくてそこは Unity でやってね、とかは Apple のやり方的になさそう。
Avatar
omochimetaru 1/16/2018 3:03 AM
あー、それはありそうですね、顔絵文字とかも同じ技術っぽい>Apple自身が使うために
Avatar
最近は均衡してるんだなぁ http://gs.statcounter.com/os-market-share/mobile/
This graph shows the market share of mobile operating systems worldwide based on over 10 billion monthly page views.
Avatar
omochimetaru 1/16/2018 3:03 AM
どうせ作るならSDK化して還元みたいな。
3:04 AM
ウェアラブルデバイスと arOS 出すとかいう噂
ほほお・・・
Avatar
へー、 iOS 下がってないんだね。意外。
Avatar
@koher 自分も下がり続けてるかと思ってました
Avatar
omochimetaru 1/16/2018 3:04 AM
Firefox OS 0.46% w
Avatar
Unknownなんだよw
Avatar
死んだ人のこと悪く言うのはやめましょ
Avatar
Symbianとかその辺全部かな
Avatar
↑のシェアで↓すごい
昨年の世界スマートフォン業界全体での営業利益は537億ドルですが、そのうち449億ドルがAppleの利益でした。
https://iphone-mania.jp/news-160978/
2016年通年での世界スマートフォン利益のうち、Appleが79.2%を得ていたことが、Korea Heraldが入手したStrategy Analyticsの調査データから明らかになりました。   Korea Heraldは、「価格を最大化する一方で生産コストを最低限に抑える」App
Avatar
2:8の法則だ
3:09 AM
8割の富を持ってる2割がiOS使ってるから利益が富の割合のまま出てる、とかありそう
Avatar
シェアも下がってないみたいだし、思ってたより iOS 長生きしそう。最悪あと 5 年くらいでダメかと思ってた。
Avatar
モバイルOSという戦場自体が終わることのほうが気になる
3:11 AM
出来の良いウェアラブルデバイスとかarとかその辺来たら一気に終わりそう
Avatar
@tarunon 前に @Biacco42 と話してて、ウェアラブルだと入力インタフェースが難しいという話になりました。スマホの入出力(ディスプレイとタッチパネル)が一体になっているのは大きな強みだと思います。
Avatar
入力は多分後5年くらいでブレイクスルーがあると思っていて
Avatar
ウェアラブル(特に常時身に付けているグラス型デバイス)は新しい世界を切り開いてくれるでしょうが、スマホと組み合わせて使うような形になる気がします。
Avatar
脳波から入力出来る日が来そう
Avatar
入力デバイスアツいんですよ〜
3:18 AM
やはり電脳化
Avatar
今モバイルより小さくならないのは、入力装置の限界がそれだからですね
Avatar
うーん、「できる」のと快適なものを作れるのの違いは大きいから、そんなにすぐに使い物になるものが出てきますかねー?
3:19 AM
タッチパネルも、 iPhone 以前はほとんど役に立たなかったし・・・。今でもカーナビとか回転寿司のタッチパネルとかイライライする。 10 年遅れてるんじゃないか・・・。
Avatar
omochimetaru 1/16/2018 3:20 AM
電脳化推し勢だ
Avatar
http://shiropen.com/2018/01/14/31458 がもっと発達すればいずれ・・・
ATR(国際電気通信基礎技術研究所)と京都大学の研究者らは、fMRI(機能的磁気共鳴画像法)によって測定された人間の脳活動のみから機械学習を用いて視覚像を再構成する提案を論文にて発表しました。
Avatar
キーボード入力は本当に遅いんで早く電脳化したいです
3:21 AM
チップやら電極やら埋め込むのもウェルカム
🙌 1
Avatar
物理的な制約条件として、絶対座標が指定できることとその絶対座標が人間にとって認識可能(ディスプレイとか物理的な領域)であることが必要で、そうなると結局操作するのに腕を上げるのか?みたいになってしまって、手じゃなくもう脳の信号でやるしかない感がある
Avatar
omochimetaru 1/16/2018 3:22 AM
その研究、たんにDNNを高解像化に使ってるのと同じで、統計的に予測してるわけだから、なんか脳を盗み見るのとは違う感があるんだよなあ (edited)
3:22 AM
こう、キーボード入力してる時の電磁波を読み取ってパスワードを盗む、みたいなクラッキングがあるけどそれと同じで
Avatar
@omochimetaru 脳で考えてることをそのまま読み取るわけじゃなくて、こう考えたらこう動くみたいなのを人間がトレーニングしながら身に付けるんじゃないかな?
Avatar
omochimetaru 1/16/2018 3:23 AM
内部処理系をフックしてるわけじゃなくてハード的なノイズから外形的にスキャンしようとしていて
Avatar
fMRI での操作、電通大とかもやってたけど、右に曲がるために犬を想像するみたいな操作方法でそれは無理があるだろみたいな気持ちになってた
Avatar
omochimetaru 1/16/2018 3:23 AM
@koher ああそれをインターフェースにするのか・・・
3:23 AM
右に曲がるために犬を想像する
これを繰り返したら自然とできるようになるみたいな?
3:23 AM
ファンタジー世界の魔法詠唱のトレーニングみたいですね。
Avatar
理屈としてはそうだった
Avatar
古い研究でも、電極さえさせば、訓練したら猿がロボットアームを考えて動かせるようになるらしい。
Avatar
ゲームやる時にMapを見て瞬時に判断するみたいなの
3:24 AM
トレーニング繰り返したらできるようになるのと一緒
Avatar
魔法詠唱…なんか言葉ぐらい抽象的なのを検出できればまぁ…
Avatar
「犬を想像する」みたいなものでなくても、本来的には腕を動かすとかも同じようにやり方を試行錯誤で身に付けてると思うんよね。
🐶 1
Avatar
omochimetaru 1/16/2018 3:24 AM
うーんそっか人間側もトレーニングする事を考慮すれば良い路線な気もしてきた。
Avatar
それでいくと、あんま使ってない筋肉の部分の神経信号を拾うとかのほうが直接的でいいと思うんですよね (edited)
Avatar
六本目の指を生やすプロジェクトがあって
3:25 AM
それは足のセンサで動かすんだけど訓練すれば脳みそがつながるって書いてたな (edited)
Avatar
@tarunon それがいい
Avatar
肉体ベースだと遅いという問題がある
Avatar
ある場所にスムーズに指先を持っていくとか当たり前にできるけど、子供を見てると乳幼児は初めはできなくて、試行錯誤の中でできるようになっていく。それが脳や身体の発達によるものなのか、訓練の結果なのかわからないけど。
Avatar
人間の肉は思考を追い越せない
Avatar
杖の先感覚って話があって、松葉杖ついて歩いてると、そのうち松葉杖の先端の近くがモデル化されて感覚(触覚?)得られるらしいんですよね。身体感覚が拡張できる (edited)
Avatar
六本目の指を生やすプロジェクトがあって それは足のセンサで動かすんだけど訓練すれば脳みそがつながるって書いてたな
3:26 AM
これはすごい可能性がありそうだ。
3:26 AM
これですね
Avatar
脳に電極刺すより現実的だ。
Avatar
なので fMRI とかより、実際の神経系の信号を拾ってくるのいいと思うんですよ
👍 1
Avatar
omochimetaru 1/16/2018 3:27 AM
サムネが作画ミスみたいでウケるな
😇 2
Avatar
圧倒的に #ios じゃなくなってた 😇
😇 1
Avatar
問題は、指を動かすのに追加の訓練はいらないけど、これは追加の訓練が必要なことかなぁ?フリック入力とかも訓練が必要だったし問題ない?
Avatar
そこは利便性が優れば全然人間は習得すると思いますねぇ
Avatar
老害は駆逐されて脳波ネイティブの子どもたちが高速で機械と対話する世界になるよ
Avatar
↓みたいなシナリオかな? arOS とグラス型デバイスを投入 →当初は Apple Watch みたいに iPhone と連携 →追加で神経系を使った入力デバイス投入 →徐々に移行
Avatar
omochimetaru 1/16/2018 3:31 AM
脳波ネイティブの子どもたちが高速で機械と対話する
そういう断絶は起こりそう
3:31 AM
「キーボードおじさん」と呼ばれる時代が来るぞ (edited)
Avatar
既にそろばんと電卓、電卓とエクセルで起きた事象ですけどね
Avatar
↑なら最速 2025 年くらいで実現できる気がしてきた・・・。
Avatar
既に子どもたちは音声入力をガンガン使っていて
3:32 AM
キーボードはおじさんなので…
Avatar
おじさん
Avatar
それほんまウケる
3:32 AM
進化の方向間違いすぎ
Avatar
omochimetaru 1/16/2018 3:32 AM
そこまでやるならちょくせつUSBに指させよって思うよね。
😇 1
Avatar
それこそこれとか身体感覚拡張されてるだろうし、脳に対して一定の入出力フィードバックを与えることが重要なんよなぁ
3:34 AM
インターフェースは好きにすればいい
Avatar
早く機械と対話したい・・・
😂 1
Avatar
https://www.tryswift.co/events/2018/tokyo/jp/#charles Charles for iOS 出るんですねー。実機での通信デバッグ楽になりそう。 (edited)
try! Swift is an immersive community gathering about Swift Language Best Practices, Application Development in Swift, Server-Side Swift, Open Source Swift, and the Swift Community taking place around the world in Tokyo, New York, and Bangalore.
👀 1
Avatar
omochimetaru 1/19/2018 6:01 AM
iOSデバイス上で直接トラフィックをキャプチャできるって書いてあるけど
6:01 AM
どういうこっちゃ??
6:02 AM
プロキシとしてローカルホストを指定して、検証したいアプリそれ自身の中で Charles が立ち上がるんだろうか。
Avatar
https://developer.apple.com/documentation/networkextension 多分この辺じゃないでしょうか。
Avatar
omochimetaru 1/19/2018 6:03 AM
おお、そういうモジュールを作れる仕組みができたんですね。
Avatar
今日の飲み会で,Realmをあんま使ってない印象を受けたのだが,今からリリースするアプリにRealmを使うべきなのか,田舎 CoreDataは,Swiftで使いにくくないっすか?
🤔 1
Avatar
今風ならfirebase??
Avatar
ローカルでやりたいとしたら?
Avatar
やっぱ当面はRealmですかねえ
Avatar
UserDefaults
2:56 PM
そして破綻へ
2:57 PM
各端末のローカルディスクにしっかりとした永続層を持つアプリ、ちゃんとつくったことない
Avatar
Android Architecture ComponentのRoomみたいに、公式でDB出してくれればいいのに、って思ったらそれがCoreDataだったわ (edited)
Avatar
おしまい
Avatar
Realmにしましょう。壊れたらsonsonさんが直してくれる。
💪 4
Avatar
omochimetaru 2/1/2018 3:02 PM
ローカルだけのあれなら今SQLite使ってみてるんですけどこのライブラリのAPIがSwiftyで楽しい https://github.com/stephencelis/SQLite.swift
SQLite.swift - A type-safe, Swift-language layer over SQLite3.
Avatar
友達だ(違う)
Avatar
issueたまってんな
Avatar
@d_date てめぇ
😗 1
3:04 PM
SQLiteにもどるかぁ・・・・えええええええ
Avatar
omochimetaru 2/20/2018 2:53 AM
SceneKitのSCNQuaternion、プロパティで返してくるのに何もメソッド提供されてなくて流石にビックリした
2:55 AM
GLKitのGLKQuaternionはいろいろ持ってるようで。
Avatar
omochimetaru 2/20/2018 2:55 AM
↑そのエイリアス定義があるだけ
Avatar
SceneKit と ARKit 使うとその辺りがつらい。
Avatar
omochimetaru 2/20/2018 2:56 AM
なんでこれGLKitの型へのエイリアスにしてないんだろう
Avatar
SceneKit と ARKit で型が違うのも辛い (edited)
Avatar
omochimetaru 2/20/2018 2:56 AM
SceneKitはMetalでも使えるように分離してるからか?
Avatar
SceneKit は GLKit から独立させたいんじゃない?
Avatar
omochimetaru 2/20/2018 2:57 AM
GLKitの数学周りはOpenGL関係ないし提供しておいてほしかったな・・・
2:57 AM
うーん、どこに寄せてコーディングするのが楽なんだw
Avatar
うん。そのあたりの数学ライブラリを独立させて共通化してほしい。
Avatar
omochimetaru 2/20/2018 2:58 AM
SCN系かなぁ・・・
2:58 AM
いや、でも、QuaternionがTypeAliasだとextensionとか生やすと困ったことになるな・・・
2:58 AM
vec4が汚染されちゃう、というか、Quaternion同士の掛け算を定義したくても
2:59 AM
vectro4同士のものになっちゃうし最悪だ 駄目だコレ
Avatar
メモリレイアウトと、行ベクトルか列ベクトルかの組み合わせで本当に混乱する
3:00 AM
4x4行列が与えられても、名前から、どっちからどっちへの座標変換かわからなかったり
Avatar
omochimetaru 2/20/2018 3:00 AM
え、もしかして、GLKMatrixってcolumn-major? (edited)
Avatar
GL はそうだったような。
Avatar
omochimetaru 2/20/2018 3:01 AM
/* m30, m31, and m32 correspond to the translation values tx, ty, and tz, respectively. m[12], m[13], and m[14] correspond to the translation values tx, ty, and tz, respectively. */ public struct _GLKMatrix4 { (edited)
3:02 AM
ほんとだ。
Avatar
行ベクトルなんじゃなくて column-major なんよね、確か。
Avatar
omochimetaru 2/20/2018 3:03 AM
translationが3行目に横に並んでるしそうですね あれ、でもindexは末尾に来てるからrow-majorなのか
Avatar
メモリレイアウト上は平行移動が最後に来て、概念としては列ベクトルだったはず。
Avatar
omochimetaru 2/20/2018 3:04 AM
たしかにこれGLに合わせて転置してるのか、右から掛けるつもりなのか左なのかよくわからんですね (edited)
Avatar
GL も概念としては列ベクトルだったと思う。
Avatar
omochimetaru 2/20/2018 3:04 AM
それは、そうです。
Avatar
DESCRIPTION glTranslate produces a translation by (x,y,z). The current matrix (see glMatrixMode) is multiplied by this translation matrix, with the product replacing the current matrix, as if glMultMatrix were called with the following matrix for its argument: 1 0 0 x 0 1 0 y 0 0 1 z 0 0 0 1
3:05 AM
SCN 系は行ベクトルなんよね?たしか。
3:06 AM
なので、 GL 系とはメモリレイアウトは一緒だけど概念上異なる。
3:06 AM
matrix_float4x4 はメモリレイアウトが転置してなかったかな。自信ないけど。
3:07 AM
一番機能が充実してるやつで統一するのがいいと思う。 SCN 系は最低限のものしかなかった印象。
Avatar
omochimetaru 2/20/2018 3:08 AM
GLKitが良さそうですねえ・・・
Avatar
悩ましいのは、 GLKit を加えると、本来 SceneKit × ARKit に必要のなかった第三の数学ライブラリを導入することになる点なんよね。
3:11 AM
SCN 系の extension 書きまくるという手もなくはないけど、クォータニオンがダメなのか・・・
Avatar
omochimetaru 2/20/2018 3:15 AM
うーむ、よくわからないけど、mXYの表記が、X列Y行 って考えると辻褄が合う?
Avatar
行列,行列による変換,Quaternionの実装問題は,20年前から解決していない・・・・・・
9:06 AM
あと,いつまでたっても,column-majorとrow-majorのレイアウトを覚えられない
Avatar
最近のiOSアプリ制作における重要な要素が揃っているオープンソースアプリやサンプルアプリのgithubレポジトリ、 もしくはそんな重要要素を学べる書籍・チュートリアルをご存知の方いましたら、教えていただきたいです。 学生で周りにiOSに詳しい知人もおらず、閉塞感を感じています。
Avatar
少し古いですがこういうやつですかね https://github.com/mixi-inc/iOSTraining
iOSTraining - Training course repository for iOS app development
Avatar
https://github.com/kickstarter/ios-oss KickstarterはiOSアプリがossですね、結構引き合いに出されています
ios-oss - Kickstarter for iOS. Bring new ideas to life, anywhere.
Avatar
コードではないですが、monoさんのこの記事も最近のiOS開発の周辺技術がまとまっていて参考になると思います! https://medium.com/swift-column/ios-2017-4f04d00a5804
🐶 1
😀 1
Avatar
皆さんいろいろ教えていただきありがとうございます! 参考にしつつ、自分でも実装してみようと思います。 Monoさんの記事のような全体の構成についてまとまっている記事は、結構求められていると思います。
🐶 1
Avatar
https://developer.apple.com/documentation/quartzcore/cadisplaylink/1648421-preferredframespersecond CADisplayLink、ドキュメントだとThe default value is 0.ってなってるけど Xcode9.3のQuartzCore/CADisplayLinkのヘッダにはThe default value is 60.ってなってるなぁ。 iOS10.3.1/11.3のシミュレータだと60が初期値になっている気がする。 0を指定すると最大値になるっていう点では間違ってない気がするけどこれ意図したドキュメントなんだろうか…。 (edited)
Avatar
omochimetaru 4/16/2018 3:18 AM
iPadって120FPSになってなかったっけ。
Avatar
iPad Pro (10.5inch)のみですね 120FPSは iPad Pro (第2世代)のみ (edited)
Avatar
omochimetaru 4/16/2018 3:20 AM
その機種で実行した時に ヘッダの通り60が入ってたら悲しい
Avatar
iPad Proの120fpsって可変とかじゃなかったでしたっけ、常にそうなんだっけ…
3:21 AM
持ってないので分からない
3:23 AM
iPad Pro 11.3のシミュレータ(1gen/2gen)は0だ (edited)
6:28 AM
120fpsは意図的にInfo.plistに記述する必要がありそう?な気もしますね ProMotion Displayというんですね (edited)
👀 2
Avatar
ProMotion Display対応機種は0で他は60が初期値な感じなんですかねー せめてiOS11で揃えてほしいなー、なんも害は無いけど
Avatar
Crashlyticsのログに上がるOOMによる殺されって、アプリがバックグラウンドに居る時に他のアプリのメモリ使用に圧迫されて自アプリのプロセスが終了されるやつのことって認識で正しいんでしょうか
Avatar
omochimetaru 4/24/2018 4:39 AM
Foregroundで使用メモリどんどん増やした場合もOOMで殺されるよ。それがCrashlyticsに上がるかはわからない。
4:40 AM
mallocを100万回呼べば試せる
Avatar
それがCrashlytics上で区別されないと厳しいと思った
Avatar
omochimetaru 4/24/2018 5:00 AM
ふむ?
5:00 AM
あー、メモリリークバグがあるのか、他アプリのせいなのか、で、
Avatar
そう
Avatar
omochimetaru 4/24/2018 5:01 AM
全く意味が違うってこと?
Avatar
Crashlytics上だとOOM-free session rateという数字がみれて
Avatar
omochimetaru 4/24/2018 5:01 AM
使用メモリ数は記録されないのかい
Avatar
されない
Avatar
omochimetaru 4/24/2018 5:01 AM
フーム
5:01 AM
ViewControllerのメソッドとか
5:01 AM
メモリ使用量が厳しいと呼ばれるメソッドあるじゃん
Avatar
didReceiveMemoryWarningsだっけ
Avatar
omochimetaru 4/24/2018 5:01 AM
あのメソッドで、現在の使用メモリ量を
5:01 AM
ログに入れとけば
5:02 AM
ある程度わかるんじゃないか。
Avatar
あー。
5:02 AM
なるほど。
5:02 AM
メモリ量って取れるんだっけ
Avatar
omochimetaru 4/24/2018 5:02 AM
ほかアプリに圧迫されたときも呼ばれるけどその時は数字は小さいはず
5:02 AM
何かしら取れるよ。
5:02 AM
昔やった記憶ある
5:02 AM
VCのdidReceiveMemoryWarnings以外にも
5:02 AM
AppDelegateとかNotificationの方にもなかったっけな
5:02 AM
あまり自信無いが。
Avatar
https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623063-applicationdidreceivememorywarni アプリケーションワイドでやるならこっちの方がいいですね。
Avatar
omochimetaru 4/24/2018 5:04 AM
それそれ
Avatar
Kishikawa Katsumi 4/24/2018 5:12 AM
https://docs.fabric.io/apple/crashlytics/OOMs.html Crashlyticsのドキュメントによると、CrashlyticsがOOMとしてレポートするのはアプリケーション自身の問題でクラッシュした時だけ (クラッシュがフォアグラウンドで起こっていた場合)
We only report the OOM if the app was in the foreground before the second launch.
とのことです。
😲 2
😀 1
5:13 AM
OSによるメモリの確保の際の強制終了はOOMとしてはレポートされないんじゃないでしょうか。
Avatar
おっおっ
Avatar
アプリ側から自プロセスのメモリ使用量知れるやつ、ググり方がわからん
5:28 AM
Normally you have to fire up instruments to see the current memory usage of your app. Just add and #import this category of UIDevice in your app and call someth...
5:28 AM
ここにたどり着いた。
Avatar
##デバイスの空きメモリ量を取得する host_statistics() を使用して、vm_statistics_data_t 構造体を取得します。その中の free_count という値が空きメモリ量を示しています。(この値の単位は...
Avatar
まさかの日本語。
5:29 AM
ios process memory usageとかでぐぐってた
5:29 AM
@rintaro ありがとうございます みてみます
Avatar
var i = 0.0 while i < 1.1 { i += 0.01 print(i, i == 1.0) if i == 1.0 { print("####called this line####") } } } (edited)
4:13 PM
これ i==1.0がうまく比較されないのですが、なぜなんでしょう…。
4:17 PM
スレッドの問題じゃないっぽいな…
4:20 PM
i > 1.0はちゃんと出る、+=0.01が大雑把に加算されてるのかな
4:23 PM
0.81 false 0.82 false 0.83 false 0.839999 false 0.849999 false 0.859999 false 0.01じゃなくなるタイミングがある、なんか言語仕様的なアレでしたっけこれ…
Avatar
浮動小数点誤差?
4:25 PM
0.1(10) = 0.000110011001100110011...(2)
Avatar
2進数で表現できないやつっすかね
Avatar
あーなるほど!しっくり来ました。0.85は2進数だと表現出来ないのか…
Avatar
NSDecimalNumberを使うといいとかなんとか
Avatar
var double: Double = 0.0 var decimal: Decimal = 0.0 for _ in 1...100 { double += 0.01 decimal += 0.01 print(double) print(decimal) } を実行すると、 … 0.8 0.8 0.81 0.81 0.820000000000001 0.82 0.830000000000001 0.83 0.840000000000001 0.84 … 0.82から狂いはじめてますね
😀 1
Avatar
@swift-4.0.3 import Foundation var i: Decimal = 0.0 while i < 1.1 { i += 0.01 print(i, i == 1.0) if i == 1.0 { print("####called this line####") } } (edited)
Avatar
swift40 BOT 5/3/2018 4:35 PM
0.01 false 0.02 false 0.03 false 0.04 false 0.05 false 0.06 false 0.07 false 0.08 false 0.09 false 0.1 false 0.11 false 0.12 false 0.13 false 0.14 false 0.15 false 0.16 false 0.17 false 0.18 false 0.19 false 0.2 false 0.21 false 0.22 false 0.23 false 0.24 false 0.25 false 0.26 false 0.27 false 0.28 false 0.29 false 0.3 false 0.31 false 0.32 false 0.33 false 0.34 false 0.35 false 0.36 false 0.37 false 0.38 false 0.39 false 0.4 false 0.41 false 0.42 false 0.43 false 0.44 false 0.45 false 0.46 false 0.47 false 0.48 false 0.49 false 0.5 false 0.51 false 0.52 false 0.53 false 0.54 false 0.55 false 0.56 false 0.57 false 0.58 false 0.59 false 0.6 false 0.61 false 0.62 false 0.63 false 0.64 false 0.65 false 0.66 false 0.67 false 0.68 false 0.69 false 0.7 false 0.71 false 0.72 false 0.73 false 0.74 false 0.75 false 0.76 false 0.77 false 0.78 false 0.79 false 0.8 false 0.81 false 0.82 false 0.83 false 0.84 false 0.85 false 0.86 false 0.87 false 0.88 false 0.89 false 0.9 false 0.91 false 0.92 false 0.93 false 0.94 false 0.95 false 0.96 false 0.97 false 0.98 false 0.99 false 1 true ####called this line#### 1.01 false 1.02 false 1.03 false 1.04 false 1.05 false 1.06 false 1.07 false 1.08 false 1.09 false 1.1 false (edited)
😩 3
Avatar
ありがとうございます、そして実際のコードは override func viewDidLoad() { super.viewDidLoad() while i < 1.1 { i += 0.01 } } public var i: Float = 0.0 { willSet { self.i = min(newValue, 1.0) } didSet { if i == 1.0 { print("####called this line####") } } } こんな感じだったのですが、willSetで代入予定の値差し替えるのは出来ないんですね willSetでガードしていたつもりだったので変にハマってしまった…
Avatar
omochimetaru 5/3/2018 5:37 PM
0.01が2進数だと表わせないですね。
😀 2
Avatar
はじめまして。 CrashlyticsのOOM-free session rateについて調べてて、BackgroundFetchしていると正確に計測できないというstack overflowのやり取り見つけたんですが、類似の事象が出ている方、回避方法が分かる方いらっしゃいますか? https://stackoverflow.com/questions/48121843/suddenly-getting-many-fabric-out-of-memory-sessions-can-fabric-oom-reports-ever fetchで起動->終了がクラッシュとみなされているなら回避方法なさそうにも思いますが。
I recently added background fetch in my application and it is working well. I recently noticed in Fabric that the amount of OOM free sessions have gradually gone from 100% to a daily average steady...
Avatar
http://blog.corywiles.com/broken-facetime-audio-interruptions-in-ios-9 AVAudioSessionInterruptionTypeEndedが呼ばれない問題まだ直ってない気がする
Constant Interruptions I’ve been working on a new feature for RabbleTV the past 3 months. Now that the functionality is pretty close to shipping I’m going through all the various testing scenarios...
Avatar
iOS11 で通知センターに表示される通知のアプリ名がアルファベットだと全て大文字になるのってバグなのか仕様なのかどっちなんだろう? (edited)
Avatar
仕様なんだろうなーと思ってました 😂
6:19 AM
UITableView (stype=grouped)の section ヘッダーも勝手に大文字になってしまいますし、結構そういうのは多いのかなーと
Avatar
なるほど
Avatar
omochimetaru 5/25/2018 2:33 AM
https://gist.github.com/omochi/eedb0d692bf9d778e4c65b0b0955e087 DispatchQueueのスレッド関係の振る舞いについて調べてみました。 iOS実機で実行して調べました。 1. .sync は呼び出しスレッドで実行される。キューのスレッドではない。 2. .async はキューのスレッドで実行される。 3. 複数のキューがスレッドを共有する事がある。ワーカースレッド512本まではキューのために新しいスレッドが立つが、 513個目のキューには既存のスレッドが共有割当された。この数はおそらく環境によって変わるんだろう。 4. キューに割り当てられたスレッドが変更される事は無さそうだった。
😀 1
Avatar
norio_nomura 5/25/2018 3:14 AM
1. .sync は呼び出しスレッドで実行される。キューのスレッドではない。
これ何か例外となる条件があった様な記憶が…
Avatar
norio_nomura 5/25/2018 3:36 AM
DispatchQueue.main の時はだけキューのスレッドかな? (edited)
Avatar
omochimetaru 5/25/2018 3:37 AM
あーたしかに、mainからsyncで呼んだ場合しか見てないです。
Avatar
norio_nomura 5/25/2018 3:58 AM
他にも何か条件により変わった気もしますが、忘れました。
Avatar
この数はおそらく環境によって変わる
この実機はiPhoneXですか?
Avatar
omochimetaru 5/25/2018 6:03 AM
@noppe iPhoneSEです
Avatar
queue512: thread sharing found: queue 1 also use <NSThread: 0x1c807da80>{number = 4, name = main} iPhoneXでも512っぽいですねー
😀 1
Avatar
omochimetaru 5/25/2018 6:16 AM
ほー
Avatar
@omochimetaru #scenekit があってもいいかも。
Avatar
omochimetaru 6/7/2018 7:54 AM
作った。
🙏 1
Avatar
質問なのですが、iOSでopenURL(URLスキーム)でアプリを起動する際に表示されるダイアログ("アプリ名"が"アプリ名"を開こうとしています。)を聞かれないようにする方法ってどなたかご存知でないでしょうか? こちらのStackOverflowでの質問と同じ事象なのですが、OSがハンドリングする部分なので、特別な設定値などなければ難しいような気もしています。 https://stackoverflow.com/questions/32312009/how-to-avoid-wants-to-open-dialog-triggered-by-openurl-in-ios-9-0
I use openURL to open app B from App A, and I get this alert dialog "App A wants to open App B", with two buttons, "Open" and "Cancel". If I press "Cancel", app B won't open and dialog will appear...
Avatar
Kishikawa Katsumi 6/11/2018 5:24 AM
@shtnkgm 無理ですね。
Avatar
やはり無理ですよね、ありがとうございます。
Avatar
omochimetaru 6/13/2018 5:18 AM
OperationQueueよくわからないからスルーしてたけど、DispatchQueueでコールバックとかやってるとキャンセル判定を自前でやるので面倒だったが、OperationQueueだったらそういう仕組もついてくるんですな。
Avatar
Kishikawa Katsumi 6/13/2018 5:20 AM
OperationQueueのキャンセルはフラグが立つだけで、キャンセルの処理自体は自分でやる必要があるんじゃないかな。
Avatar
omochimetaru 6/13/2018 5:20 AM
https://developer.apple.com/documentation/foundation/operation#1661262
The default implementation of NSOperation includes checks for cancellation. For example, if you cancel an operation before its start() method is called, the start() method exits without starting the task.
5:21 AM
Operationのstartが呼ばれる前にcancelされた場合、デフォルト実装ではタスクを開始せずに終了する、と読みました
Avatar
Kishikawa Katsumi 6/13/2018 5:21 AM
なるほど。スタートしてない状態のタスクについてはそうかも。
Avatar
omochimetaru 6/13/2018 5:21 AM
タスク自体が一定時間かかるようなものだとキャンセルチェックしないといけなそうですけど
5:21 AM
ワンショットなコールバックやイベントを、ライブラリからユーザに投げかえすだけ、
5:22 AM
な用途であれば、この挙動に頼れば済みそうなのかなと
5:22 AM
Operationオブジェクトは作らずに、この、OperationQueueに直接クロージャを投げるやつを使う場合。
Avatar
Kishikawa Katsumi 6/13/2018 5:23 AM
Blockを直接追加するやつは特に便利ですね。基本的にOperationQueueはGCDのハイレベル版として捉えるというのは合っています。
😃 1
Avatar
omochimetaru 6/13/2018 5:23 AM
よかった。
5:24 AM
https://github.com/omochi/ForceHTTP/blob/master/Sources/ForceHTTP/FHTTPSession.swift#L255 先日作ったForceHTTPでも、キャンセルされてたらhandlerがnilなのでエラー通知されない、というロジックがあるんですが
Contribute to ForceHTTP development by creating an account on GitHub.
5:25 AM
swift-corelibs-foundation - The Foundation Project, providing core utilities, internationalization, and OS independence
5:26 AM
URLSessionのOSS実装で、同じような場面で特に分岐機構がなかったのでよく見たら、 https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/URLSession/URLSession.swift#L268 delegateQueueとかの型がOperationQueueだった。
swift-corelibs-foundation - The Foundation Project, providing core utilities, internationalization, and OS independence
5:27 AM
open func invalidateAndCancel() { NSUnimplemented() } まあ、キャンセルの実装されてないけどw
😇 1
😃 1
Avatar
DispatchWorkItem ってどうなんでしょう?あまり使われてない?
🤔 1
Avatar
omochimetaru 6/13/2018 5:48 AM
あ、微妙に読み違えてる点があった。URLSessionの実装でOperationQueueはユーザから受け取ったオブジェクトをそのまま使ってるから、URLSessionがdelegateQueue.cancelAllOperations()を呼ぶことは許されないわ。
3:14 PM
Auto-Renewable Subscription新規に作るにはなんか条件あるんでしたっけ?
3:15 PM
項目がない・・
Avatar
自己解決、ここ押してなかった
😆 1
Avatar
謎のメッセージ😫
12:04 PM
iOS12 入れてからずっと出ます…..…..…..…..
Avatar
それなんなんでしょうね。出ていつもNot Now押してますけど
Avatar
怖くっていつももNot Now押してますね
Avatar
On my mac I've recently updated to the latest macOS version 10.13.5 and have installed Xcode 10 (beta 1). For my iPhone X there is an update available to 11.4 but i didn't install that yet. Now the...
1:14 AM
6/20の時点ではインストールを押しても何も起きないようですねー
Avatar
ナタリー 6/26/2018 6:42 AM
ohtaさん ありがとうございます(´ω`)
Avatar
ナタリー 6/26/2018 6:50 AM
犯人が Xcode みたいですね ……
😃 1
Avatar
daisukeokaoss 6/27/2018 2:48 AM
すいません質問なんですけど、iOSのカメラからiPhoneアプリで、任意のピクセルのRGB値をRawというか生というか、そういう形で取得したいんですが、そういうこと可能でしょうか?
Avatar
omochimetaru 6/27/2018 2:48 AM
できますよ
Avatar
daisukeokaoss 6/27/2018 2:48 AM
できるんですか?なんか、色々試したんですが難しいんですよね
Avatar
daisukeokaoss 6/27/2018 2:49 AM
Get live access to pixel or audio data streaming directly from a capture deviceとかいう記述ありますね
Avatar
omochimetaru 6/27/2018 2:50 AM
↑今貼ったAPIでCMSampleBufferが取れて
2:51 AM
で、たしかこれで取れるCMImageBufferが実際にはCVPixelBufferのインスタンスで
2:52 AM
CVPixelBufferまでいければLockしてGetBaseAddressとかでビデオメモリにアクセスできます
Avatar
daisukeokaoss 6/27/2018 2:52 AM
なるほど、ちょっとやってみます。ありがとうございました
Avatar
omochimetaru 6/27/2018 2:54 AM
Contribute to ARWave development by creating an account on GitHub.
2:54 AM
↑めちゃくちゃ昔にやったコードがありました。
Avatar
@daisukeokaoss YUV じゃなくて BGRA で取り出した方が簡単だと思います。 https://developer.apple.com/documentation/corevideo/kcvpixelformattype_32bgra
Avatar
omochimetaru 6/27/2018 2:56 AM
https://github.com/omochi/ARWave/blob/master/ARWave/ARWave/ARWGLCameraRenderer.m ↑のコードはYUVで取り出した後OpenGLのシェーダーでYUV -> RGB変換をしてます
Contribute to ARWave development by creating an account on GitHub.
Avatar
それをやってもいいけどハードルが高いかなと。
Avatar
omochimetaru 6/27/2018 2:56 AM
キャプチャするときにRGB指定しておくと簡単ですね。
Avatar
Obj-C のコードですが↓のような感じです。 output = [[AVCaptureVideoDataOutput alloc] init]; ... output.videoSettings = @{(id)kCVPixelBufferPixelFormatTypeKey:@(kCVPixelFormatType_32BGRA)};
Avatar
daisukeokaoss 6/27/2018 2:59 AM
う。単純には行かなさそう
3:04 AM
ありがとうございます
Avatar
Kishikawa Katsumi 6/27/2018 3:55 AM
カメラのAPIは標準だと、UIImagePickerViewControllerと、AVFoundationで急に面倒さとか難易度が上がるので、 (edited)
3:57 AM
その間のがあるといいんですけどね。
3:57 AM
サードパーティのライブラリがそれを担ってるかな。
Avatar
omochimetaru 6/27/2018 3:57 AM
そうですね
Avatar
daisukeokaoss 6/27/2018 4:02 AM
うー
Avatar
簡単に使えるのができそうです。
Avatar
Kishikawa Katsumi 6/27/2018 4:15 AM
^ 楽しみですね 😍
Avatar
前々から作りたいと思ってたのを試しに実装してみました。とりあえず動くようにしただけなので実装がかなり雑ですが・・・。色々不具合もあるかもしれません。 https://github.com/koher/EasyCamery
Contribute to EasyCamery development by creating an account on GitHub.
4:19 AM
↓みたいに使えます。 import UIKit import AVFoundation import EasyCamery import EasyImagy class ViewController: UIViewController { @IBOutlet var imageView: UIImageView! private let camera: Camera<RGBA<UInt8>> = try! Camera(sessionPreset: .vga640x480, focusMode: .continuousAutoFocus) override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) camera.start { [weak self] image in DispatchQueue.main.async { self?.imageView.image = image.uiImage } } } override func viewWillDisappear(_ animated: Bool) { camera.stop() super.viewWillDisappear(animated) } }
4:20 AM
image は EasyImagy の Image 型なので自由にピクセルにアクセスできます。 var image = Image<RGBA<UInt8>>(named: "ImageName")! print(image[x, y]) image[x, y] = RGBA(red: 255, green: 0, blue: 0, alpha: 127) image[x, y] = RGBA(0xFF00007F) // red: 255, green: 0, blue: 0, alpha: 127 // Iterates over all pixels for pixel in image { // ... } // Processes images (e.g. binarizations) let binarized: Image<Bool> = image.map { $0.gray >= 127 } // From/to `UIImage` image = Image<RGBA<UInt8>>(uiImage: imageView.image!) imageView.image = image.uiImage
Avatar
すごい、これパフォーマンス大丈夫なんですか?
Avatar
今はちょっと怪しいです。
Avatar
リアタイは厳しかったか😂
Avatar
いや、リアルタイムくらいは余裕ですよ。
4:23 AM
余計なオーバーヘッドがあるという意味です。
Avatar
ふむふむ
Avatar
ちゃんとがんばれば余計なオーバーヘッドもなくせそうだと思ってます。
4:23 AM
今の実装は排他処理周りもあやしいです。
Avatar
AVFoundationって、多分カメラ周りは普通にエンコード済みのデータが流れてる気がしてて、その手合いになってくるとstructなImageはどう戦うんだろうみたいなのを考えてた
Avatar
とりあえず、 CVPixelBufferBGRA で来るので、 RGBA に変換してるとこのオーバーヘッドが相当あります😅
Avatar
あーPixelBufferで取るならエンコ済みではないですね
Avatar
CVPixelBuffer からは必ずコピーして使うので、どのみちどこかにコピーしないといけないんですが、そのコピー先を EasyImagy の Image 型のバッファにしてるので
4:26 AM
BGRA 型を作って Image<BGRA<UInt8>> でフレームを取得するのであれば、ちゃんとやれば余計なオーバーヘッドなしになりそうだと思ってます。
4:27 AM
CoW のコピーが余計に発生しないようにできるかが確信を持ててないですが、できそうな気がしてます。
4:32 AM
あ、 UIImage に変換して UIImageView で表示させてるとこはもちろん余計なオーバーヘッドがあります。本当はもっと効率的な方法でレンダリングすべきです。が、そこはライブラリの外の話なので。 EasyImagy に withUnsafePointer とか実装してあるんで、それを使って image から効率的にレンダリングは可能です。
Avatar
Kishikawa Katsumi 6/27/2018 4:35 AM
でも速度が足りてれば、UIImageとUIImageViewで表示できるのはめっちゃ便利ですね。 CameraPreviewLayerはCALayerだからAutoLayoutと相性悪いし。
Avatar
daisukeokaoss 6/27/2018 4:35 AM
お!Image<RGBA<UInt8>>のフォーマットで保存してるんですね
4:38 AM
おーーーーーーーー
4:42 AM
すごい
Avatar
ちょっと変更して、必ず DispatchQueue.main.async を通してコールバックが呼ばれるようにして、コールバックに渡された imageinout にしてそのまま編集できるようにしました。 ↓は画像のピクセルにアクセスして編集して、ネガポジ反転してる例です。 import UIKit import AVFoundation import EasyCamery import EasyImagy class ViewController: UIViewController { @IBOutlet var imageView: UIImageView! private let camera: Camera<RGBA<UInt8>> = try! Camera(sessionPreset: .vga640x480, focusMode: .continuousAutoFocus) override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) camera.start { [weak self] image in // Makes `image` negative image.update { pixel in pixel.red = 255 - pixel.red pixel.green = 255 - pixel.green pixel.blue = 255 - pixel.blue } self?.imageView.image = image.uiImage } } override func viewWillDisappear(_ animated: Bool) { camera.stop() super.viewWillDisappear(animated) } }
4:50 AM
でも速度が足りてれば、UIImageとUIImageViewで表示できるのはめっちゃ便利ですね。
体感的なパフォーマンス低下がないならコードがシンプルになるのはいいですね🙂
Avatar
daisukeokaoss 6/27/2018 4:52 AM
おー、これで生データに近い形で取得できてるわけですね
Avatar
image は生のピクセルデータですね。↑の例はそのピクセルを操作してネガ・ポジ反転してます。 (edited)
4:54 AM
あ、「生の」というのが CVPixelBuffer そのものかという意味でしたらコピーと、 CVPixelBuffer では BRGA なので R と B の反転をしてるという意味で生ではないです。個々の RGB のチャネルの値は生の値と同じですね。 (edited)
Avatar
daisukeokaoss 6/27/2018 4:57 AM
コンパイルにはEasyImageが必要なんですね
Avatar
Carthage をサポートしてるので、 Cartfile に github "koher/EasyCamery" "master" と書いて carthage update --platform ios すれば EasyImagy も勝手に取得してビルドされると思います(試せてませんが・・・)。 (edited)
Avatar
daisukeokaoss 6/27/2018 5:06 AM
なるほどー
Avatar
生データ何に使うかによって扱うレイヤー違う気もしますねー、フィルタかけるだけならCIFilterでいいかもしれない
😃 1
Avatar
ですねー。本当にピクセルを操作したい場合ではなく、専用の方法が用意されているならそれを使う方がパフォーマンス的に望ましいですね。
Avatar
@koher すごい。ささっとコードを書いたら すぐに動いちゃいました😃 画像が左に90度傾いているのですが、何か間違ってますでしょうか? iPhone 6s iOS 12 beta 2です。 (edited)
Avatar
@n.0939 端末の向きのよらずカメラの入力は必ず Landscape Right の状態で来るので、レンダリング側で調整しないといけないですね。 UIImageView で出力するなら、オーバーヘッドを気にしなければ image.rotated(byDegrees: 90) とかで回転できます。 (edited)
7:14 AM
本当は回転した状態でレンダリングするのが望ましいです。
Avatar
omochimetaru 6/27/2018 7:14 AM
簡単ライブラリー的には回転しておいたほうが親切そうだけど重くて悩ましいな
Avatar
Metal とか GL とか CoreGraphics とかで。
Avatar
@koher ありがとうございます🙇 (edited)
🙂 1
Avatar
omochimetaru 6/27/2018 7:14 AM
あ、UIImageとかだったら、「表示すべき回転量」がプロパティで持てなかったっけ?
7:15 AM
ああ、UIImageじゃなくてEasyImagyだからそういうのは無いのか。
😃 1
Avatar
@omochimetaru うーん、さすがにコールバックに回転した状態のものが来るのはオーバーヘッド的にも微妙だし、あと画像処理とかを考えると端末の向きで入力が変わるのは避けたいとかもあるので、基本はレンダリング側で対処かなぁ。
7:17 AM
UIImageView よりパフォーマンスのいい専用 View を提供して、そこでオリエンテーションを吸収とかはありかも?
Avatar
Targets ( > my iOS app) > General > Deployment Info > Device Orientation で、 Landscape Right のみをチェックしたら良い感じになりました😃
Avatar
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // Makes `image` negative camera.start { [weak self] image in image.update { pixel in pixel.red = 255 - pixel.red pixel.green = 255 - pixel.green pixel.blue = 255 - pixel.blue } self?.imageView.image = UIImage(cgImage: image.cgImage, scale: 1.0, orientation: .right) } } @koher さんがご懸念されてたコールバックの度に回転させちゃうコードだとこんな感じでしょうか😅 (edited)
Avatar
↑のように UIImageorientation で設定するのが良さそうですね。それだと余計なオーバーヘッドはなさそうです。 (edited)
😃 1
8:15 AM
僕が考えてたのは Imagerotated(byDesrees:) を使って、↓のようにやることでした。 camera.start { [weak self] image in let rotated = image.rotated(byDegrees: angle) self?.imageView.image = rotated.uiImage }
8:15 AM
これだと rotated が無駄に生成される分だけ余計です😣 (edited)
Avatar
Kishikawa Katsumi 6/27/2018 8:32 AM
UIImageのorientationプロパティってUIImageViewの表示に影響与えます?
Avatar
使ったことがないのでわからないです💦
8:38 AM
Image orientation affects the way the image data is displayed when drawn.
Avatar
Kishikawa Katsumi 6/27/2018 8:39 AM
私の経験からだと^ のコードでは挙動は変わらないと思っているので、もしすでに試されてたら教えて欲しいです。 @n.0939
Avatar
self?.imageView.image = UIImage(cgImage: image.cgImage, scale: 1.0, orientation: .right) 上記のコードでしょうか? 上記と下記で挙動は変わりました。 self?.imageView.image = image.uiImage // koherさんが最初に書かれたサンプルコード (edited)
Avatar
Kishikawa Katsumi 6/27/2018 9:03 AM
そうなんですね。ありがとうございます。
😃 1
Avatar
お、それで表示も変わるんですね🙂 色んな orientation をサポートするなら .right 決め打ちではなく端末の orientation に従った値を渡す必要がありますね。
Avatar
@Kishikawa Katsumi Xcode 9.4.1 と iPhone 6s / iOS 12 beta 2 です。以下の記事を見て、Xcode 9.4.1に iOS 12用の DeviceSupportフォルダを追加してます。 https://qiita.com/Hakota/items/59b4247a203e2639f8c9
私がこの現象に陥ったのは、Xcode7 beta3 を使っていたときに 実機をアップデートしたら、 Could not find Developer Disk ImageとWarning がでて 書き込めなくなりました。 ...
9:20 AM
@koher あっ、なるほど。。😨 (edited)
9:22 AM
self?.imageView.image = UIImage(cgImage: image.cgImage, scale: 1.0, orientation: .right) print(self!.imageView.image!.imageOrientation.rawValue) @Kishikawa Katsumi 上記のようにprintを仕込んだところ、コンソールには 3 が表示され続けました。 (edited)
Avatar
let o: UIImageOrientation switch UIDevice.current.orientation { case .portrait: o = .right case .landscapeLeft: o = .up case .landscapeRight: o = .down default: o = .right } self?.imageView.image = UIImage(cgImage: image.cgImage, scale: 1.0, orientation: o) @koher @Kishikawa Katsumi こんな感じにしてみました。デバイスの向きが portraitUpsideDown である場合を除いて、良い感じに動いてます。
👍 1
Avatar
daisukeokaoss 6/27/2018 10:49 PM
おーーーーありがとうございます
Avatar
↓こんな感じが良さそうです。 import UIKit import AVFoundation import EasyCamery import EasyImagy class ViewController: UIViewController { @IBOutlet var imageView: UIImageView! private let camera: Camera<RGBA<UInt8>> = try! Camera(sessionPreset: .vga640x480, focusMode: .continuousAutoFocus) override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) camera.start { [weak self] image in // Makes `image` negative image.update { pixel in pixel.red = 255 - pixel.red pixel.green = 255 - pixel.green pixel.blue = 255 - pixel.blue } self?.imageView.image = image.uiImage(orientedTo: UIApplication.shared.cameraOrientation) } } override func viewWillDisappear(_ animated: Bool) { camera.stop() super.viewWillDisappear(animated) } } extension Image where Pixel == RGBA<UInt8> { func uiImage(orientedTo orientation: UIImageOrientation) -> UIImage { return UIImage(cgImage: cgImage, scale: 1.0, orientation: orientation) } } extension UIApplication { var cameraOrientation: UIImageOrientation { switch statusBarOrientation { case .portrait: return .right case .landscapeRight: return .up case .portraitUpsideDown: return .left case .landscapeLeft: return .down case .unknown: return .right } } } (edited)
😃 1
😀 1
Avatar
daisukeokaoss 7/2/2018 7:54 AM
すいません、連続で投稿申し訳ないんですが、EasyCameryのアプリで、露出とisoを調整したいと思っていて、露出とisoを調整するコードをEasyCameryに挿入したんですが、 https://github.com/daisukeokaoss/Akari_project2/blob/master/Sources/EasyCamery/EasyCamery.swift#L83 libc++abi.dylib: terminating with uncaught exception of type NSException この実行時エラーを吐くんですよね。原因とか分かる方おられるでしょうか?
Akari_project2 - Visual Light Communication system from rasberry pi to iOS camera
Avatar
Kishikawa Katsumi 7/2/2018 7:59 AM
libc++abi.dylib: terminating with uncaught exception of type NSException ^ これのもうちょい手前のログとかスタックトレースないですか?
Avatar
daisukeokaoss 7/2/2018 8:00 AM
スタックトレースって右下のコンソールですか?
8:02 AM
すいませんググりました
8:04 AM
スタックトレース
8:05 AM
これでわかりますか?
8:08 AM
あ、iso outside rangeとか書いてありますね
Avatar
Kishikawa Katsumi 7/2/2018 8:14 AM
詳しいわけじゃないですけど、maxISOminISOがAVCaptureDeviceFormatから調べられると思うので、その値を見てみてください。
😀 1
Avatar
daisukeokaoss 7/2/2018 8:16 AM
ヒント頂けてありがとうございます。 https://github.com/daisukeokaoss/Akari_project2/blob/master/Sources/EasyCamery/EasyCamery.swift#L83 これで実行できました
Akari_project2 - Visual Light Communication system from rasberry pi to iOS camera
8:20 AM
device.setExposureModeCustom(duration: CMTimeMakeWithSeconds(0.001, 1000*1000*1000), iso: device.activeFormat.maxISO, completionHandler: nil)
Avatar
daisukeokaoss 7/3/2018 10:56 AM
すいません。宣言したクラスを参照してくれないんですが、どうすればいいでしょうか?
10:56 AM
10:57 AM
ImageToSpectrumByFFTのクラスが参照してくれないです
10:57 AM
連続で申し訳ないですが
Avatar
Kishikawa Katsumi 7/3/2018 10:58 AM
import EasyCamery が不要に見えますね。
Avatar
daisukeokaoss 7/3/2018 11:04 AM
EasyCameryはもともとインポートされていたもので、前はエラーなしでインポートされてたのにある時からエラーになったんですよね・ 返事ありがとうございます (edited)
11:04 AM
削除するとこうなりました
11:05 AM
Avatar
Kishikawa Katsumi 7/3/2018 11:07 AM
さっきよりは進みましたね。 私が答えてしまうとあれなので聞きますけど、このエラーの中でどこがわからないですか?
Avatar
daisukeokaoss 7/3/2018 11:09 AM
TimeAxisWaveFormPlotがunresolved identifierなのがよくわからないですね。これクラスとして宣言してますよね
11:10 AM
CameraってEasyCameryで宣言されているのでは?
Avatar
daisukeokaoss 7/3/2018 11:39 AM
EasyCameryを書き換えたのが問題なのかな?
Avatar
Kishikawa Katsumi 7/3/2018 12:43 PM
たぶんそれが原因じゃないですかね。書き換えた内容がわからないとこちらからはわかりませんが。
Avatar
daisukeokaoss 7/3/2018 12:46 PM
むう。必要な書き換えなんだよね。 ありがとうございます
12:49 PM
github "mattt/Surge" ~> 2.0.0 これを削除したらコンパイル通って、クラスも参照できたんですよね
12:49 PM
Surgeと名前衝突でも起きてたのかな?
Avatar
import XXX import YYY Foo.xxx // 🙅FooがXXX,YYY両方にあるとダメ、import XXXだけなら問題ない。なので XXX.Foo.xxx // 🙆モジュール名を明示的に指定する必要がある
Avatar
daisukeokaoss 7/3/2018 2:16 PM
tarunonさんありがとうございます
Avatar
↑書いてて途中で他のことやっちゃってたんですが、これあってました?
Avatar
daisukeokaoss 7/4/2018 11:04 AM
なんか、一回Surgeを削除して、Cartageをアップデートして、もう一回Surgeを加えてCartageをアップデートしたらコンパイル通ったんですよね
11:04 AM
謎だ・・・・・・・・
Avatar
あんま調査できてないんですが iOS 11.2.6 だと UNUserNotificationgetDeliveredNotifications が常に空で帰ってくる… (iOS 11.0.2 だとちゃんと取れる)
🤔 1
Avatar
🍤ACエビフライ🔌 7/25/2018 3:29 PM
App Store Connectで最初のバージョン 1.0 を審査に出しましたが、Metadata rejected が返ってきて、「What's New を入力する必要がある」と言われています。
3:31 PM
最初のリリース(1.0)ってWhat's New 入力できるんでしょうか? 入力欄すら見当たらないです。
Avatar
🍤ACエビフライ🔌 7/25/2018 3:41 PM
念のためリリース済みの自分のアプリや他の人のアプリをいくつか見てみましたが、最初のバージョンのWhat's New(バージョン履歴)は空でした。
Avatar
無難に新規リリースだけど、What's Newって書く必要あるのかい?あるとしたらどこから書くんだい?みたいな返答してみるかですねー…
3:44 PM
相変わらずの怪しいReviewしてくるApple
Avatar
🍤ACエビフライ🔌 7/25/2018 3:46 PM
もう返答してありまして、「For information regarding adding 'What's New' text, you may want to refer to iTunes Connect Developer Help. 
Should you require additional assistance, please contact iTunes Connect Support through the Contact Us page in iTunes Connect」iTunes Connect Developer Help を見ろ、助けがいるならiTunes ConnectのContact Us ページからiTunes Connect Supportに連絡しろ、というだけの短い返事が返ってきています。
3:47 PM
完全にまともに取り合ってもらっていない様子。私の英語が未熟だからでしょうか。。。
3:47 PM
ちょっと再度審査に出すとともにiTunes Connectから連絡してみます。
Avatar
このバージョンの新機能 このプロパティは、App の最初のバージョンでは使用できませんが、以降のすべてのバージョンで必須となります。このプロパティはローカライズが可能です。
https://help.apple.com/app-store-connect/?lang=ja#/devf29afbb74
4:03 PM
切れていい案件
🙏 1
👍 1
Avatar
🍤ACエビフライ🔌 7/25/2018 4:06 PM
👺
4:09 PM
@ありぜ ありがとうございます。
👍 1
😧 1
Avatar
🍤ACエビフライ🔌 7/27/2018 3:12 AM
昨日、優先審査にサクっと通り、今日Appleからこんなメールが来てました (edited)
3:12 AM
We apologize on the miscommunication about the rejection, and we have forwarded your concerns to the review team.
3:13 AM
miscommunicationだったのだろうか? 🤔
3:13 AM
とりあえず謝罪してくれたようでなんとなくうれしいです。
🙂 1
🙌 1
3:14 AM
あらためて @ありぜ さんありがとうございました。
3:14 AM
🙇
👍 3
Avatar
へー、アップルのレビューって謝罪って言葉ご存知だったのかー(棒
😭 4
😑 2
Avatar
daisukeokaoss 7/28/2018 4:38 AM
すいません、今SurgeっていうSwiftのFFT(高速フーリエ変換)のラッパー使ってるんですが、SwiftでFFTさせようとして全然上手くいかないんですが、SwiftのFFTのライブラリって、あれ正確なんですか?
Avatar
🍤ACエビフライ🔌 7/28/2018 9:07 AM
@daisukeokaoss 上手くいかないってどういうことですか?
Avatar
daisukeokaoss 7/28/2018 9:10 AM
いや、FFTやっても、X軸の最大値あたりにピークが来て、欲しいピークが来ないんですよね
Avatar
🍤ACエビフライ🔌 7/28/2018 9:11 AM
@daisukeokaoss あるはずの周波数がまったくないんですか?
Avatar
daisukeokaoss 7/28/2018 9:12 AM
X軸は周波数軸なんですが、その周波数軸の最大値あたりに、ものすごく強いピークが来て、それ以外が出ないんですよ
Avatar
omochimetaru 7/28/2018 9:13 AM
データフォーマットを間違えていて
9:13 AM
符号付整数がアンダーフローしてれば
9:13 AM
そういうことになりそう。
Avatar
🍤ACエビフライ🔌 7/28/2018 9:13 AM
(なるほど)
Avatar
daisukeokaoss 7/28/2018 9:14 AM
floatでそういうことってありますかね?
Avatar
omochimetaru 7/28/2018 9:14 AM
floatなら無さそうですね
Avatar
🍤ACエビフライ🔌 7/28/2018 9:15 AM
私はFFTそのものが分かってないのでアレなんですけど、もし手がかりがないようなら、同じ画像をFFTできる画像処理ソフトとかにかけてみて結果を比較してみるってのはどうでしょう?
Avatar
入出力が確定してるとたしかにいいですね。適当な周波数の sin 波一旦入れてみると良さそう (edited)
Avatar
daisukeokaoss 7/28/2018 9:17 AM
いや、適当なsin波入れても、周波数最大のところにものすごいピークが来るという現象がなぜか起きるんですよね (edited)
9:19 AM
なんかFFTの使い方間違ってることは間違い無いんですよ
Avatar
周期関数になるようにはなってますか?
9:20 AM
いやそれにしても最大値にピークはおかしいか
Avatar
daisukeokaoss 7/28/2018 9:21 AM
周期関数になってなくても、正しいピークがばらける程度ですよね・・・・・・・・ (edited)
Avatar
🍤ACエビフライ🔌 7/28/2018 9:32 AM
コードかライブラリに問題があると確信があるなら、 次うてる手としては、そのライブラリのサンプルプロジェクトの動作や呼び出しと比較してみるとか、 あるいは、問題が再現する最小のソースをつくってみるとかどうでしょう。 (edited)
Avatar
daisukeokaoss 7/28/2018 9:34 AM
Surge - A Swift library that uses the Accelerate framework to provide high-performance functions for matrix math, digital signal processing, and image manipulation.
9:35 AM
このライブラリを使ったので、サンプルプロジェクトはないんですよね
Avatar
omochimetaru 7/28/2018 9:36 AM
なんらかのプログラムのミスで、本当に異常に高周波な信号を生成してしまっているとか?
Avatar
daisukeokaoss 7/28/2018 9:36 AM
うーん
9:38 AM
ライブラリが間違ってるとか、そういうことってありますかね?そもそも、サンプルプログラムもないライブラリなので、「こうすれば正しく動いた」「こういう使い方だ」っていう記事がないんですよね
9:41 AM
問題が再現する最小のソースか
Avatar
omochimetaru 7/28/2018 9:54 AM
ライブラリが間違ってることはあります
Avatar
daisukeokaoss 7/28/2018 9:56 AM
まあ、そこなんですよね。PythonでのFFTをやってみても、そんな現象起きないし、
Avatar
なので、そういうときは、シンプルな利用コードを作ってみて、ちゃんと動くか確認します
10:26 AM
それでちゃんと動いたら、そこから少しずつ変更していって、やりたいことを実現します
10:26 AM
ちゃんと動かなかったら、ライブラリのissueページに報告したりすると、良いです。
10:26 AM
サンプルプロジェクトが無いと言ってましたけど、テストコードはあるみたいなので
10:26 AM
テストコードを読んでみると使い方がわかることもあります
Avatar
daisukeokaoss 7/28/2018 10:37 AM
すいません、グラフの読み方を勘違いしていたようで、0の位置を間違っていたようです。 Pythonのコードを実行して見て、気がつきました。
10:38 AM
10:38 AM
右のグラフの真ん中が0かなーと、考えていたわけですが、右端と左端が0だったようで (edited)
10:40 AM
真ん中が0で、左右に、周波数成分が高くなっていくのかなと思ってたら、そうではなかったようで、左端と右端が0でした
10:40 AM
皆さんありがとうございました
Avatar
daisukeokaoss 7/31/2018 7:52 AM
すいません。iOSアプリから、CSVファイルを生成して、iCloudに保存し、iCloudの同期機能を使用して、MacからCSVファイルを取り出したいんですが、なかなか上手くいかないんですよね
7:55 AM
こんな感じでCSVファイルにエクスポートしようとしたんですが、なかなか上手く保存してくれなくて https://github.com/daisukeokaoss/Akari_trial/blob/master/Sample/ViewController.swift#L76
Akari_trial - Visual Light Communication system that transfer data Raspberry Pi to iOS camera by LED Light
7:58 AM
どうやればいいかわかる方おられるでしょうか?
Avatar
Kishikawa Katsumi 7/31/2018 8:05 AM
どこで失敗していますか?
Avatar
daisukeokaoss 7/31/2018 8:08 AM
print("Success to Wite the File")
8:08 AM
これは実行されてるんですが、該当ファイルがiCloud内に無いんですよね (edited)
8:10 AM
iCloudフォルダのことです
Avatar
daisukeokaoss 7/31/2018 8:52 AM
try fileStrDataForTimeAxisWaveForm.write(to: path, atomically: true, encoding: String.Encoding.utf8) print(path) print("Success to Wite the File") これは成功裏に実行されてるんですよね。ただ、該当するファイルがフォルダ内に無いという
Avatar
daisukeokaoss 8/3/2018 3:17 AM
すいません。iCloudには保存できなかったんですが、iPhoneのフォルダ内には保存できて、以下のソースコードでできました if let documentDirectoryFileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last { // ディレクトリのパスにファイル名をつなげてファイルのフルパスを作る var fileStrDataForTimeAxisWaveForm:String = "" for singleData in self.wave{ fileStrDataForTimeAxisWaveForm += "\"" + String(singleData) + "\"" + "\n" } let targetTextFilePath = documentDirectoryFileURL.appendingPathComponent(self.generateFileNameForTimeAxisWaveForm()) print("書き込むファイルのパス: \(targetTextFilePath)") do { try fileStrDataForTimeAxisWaveForm.write(to: targetTextFilePath, atomically: true, encoding: String.Encoding.utf8) } catch let error as NSError { print("failed to write: \(error)") } }
3:18 AM
@Kishikawa Katsumi さんお付き合いいただきありがとうございます
Avatar
iOS11.4にてバックグラウンド中の位置情報取得中にローカルプッシュを打ちたいのですが, 発火してくれません. UNUserNotificationCenter.current().add(request, withCompletionHandler: { error in guard let error = error else {return} print(error) }) ではエラーもなく,直前にbreakpointを貼って一度止めてから動かすと,何故か発火するという不可解な状態です. どなたか似たようなケースあった方いらっしゃいますか?
Avatar
メインスレッド作ってその中でローカルプッシュ登録していますか?
Avatar
UNLocationNotificationTrigger を使って指定場所でローカルプッシュを打ちたい感じでしょうか
Avatar
@noppe さん 登録はメインスレッドでおこなっています!
4:42 PM
@koogawa いいえ,もう少し複雑な条件下の場合のみローカルプッシュを打ちたいので,ローカルプッシュの登録をバックグラウンドで行いたいです
Avatar
下記で解決しました.単純に秒数を遅らせる必要があったみたいです. https://stackoverflow.com/questions/48064126/swift-local-notification-not-firing?rq=1
I'm trying to fire a local notification in my ios App. let notificationContent = UNMutableNotificationContent() notificationContent.title = "Test" notificationContent.body = alert let
5:09 PM
ありがとうございました
😇 1
Avatar
vicktorManuel 8/6/2018 6:31 PM
@nade ,because the seconds is not same in all phone and simulator .
Avatar
@vicktorManuel After I tried some patterns, I think 5 seconds or more looks better .
👌 1
Avatar
vicktorManuel 8/6/2018 10:34 PM
good luck nade
👌 1
Avatar
アプリ起動したときにUserDefaults読めないみたいなのってちょっと前にあったけど世界はそれ解決したんだっけ
Avatar
最近iOSで発生していた、突然NSUserDefaultsの内容が消えてしまう問題について、Appleから公式にアナウンスがありました。 https://developer.apple.com/library/content/r...
Avatar
起こってる事象を正確に把握できているわけではないんですが、多分UserDefaultsにデータは残っているんだけど、起動してすぐ(?)読み出す処理で読めない(空になってる?)ような感じのやつに遭遇しています
9:29 AM
消えてしまったわけではないっぽい
Avatar
macOS 10.13 and iOS 11 Release Notes NSUserDefaults Data Loss Fix Starting in iOS 9.3, and in subsequent releases of iOS and macOS, NSUserDefaults could fail to load data if more than roughly 250 separate apps (including separate reinstalls of the same app) had been launched since the last reboot. This has been corrected.
♥ 1
Avatar
main.swiftおいてUIApplicationMain呼ぶ前にUserDefaults触ったとしても手元ではちゃんと帰ってくるんで、単にタイミングの問題ではなさそうというのがややこい
9:29 AM
あとiOS11でも起きてるっぽ。
9:31 AM
ナウの状況はUserDefaultsからデータ読み出し不良以外この実装だったらこの問題起きないでしょ、くらいの感じなのでもしかしたらUserDefaults関係ないかもという可能性がないでもないんですけど。
Avatar
iOS 11 で発生ということは別なんですかねー?僕は User Defaults あんまり使わないので↑のような話題があったなぁということくらいしかわからないです🙏
👌 1
Avatar
viewDidLoadDispatchQueue.main.async したやつが viewDidAppear よりあとに呼ばれるのって別に何も保証されてないですよね
6:38 AM
didMove が同期的に呼ばれるとは限らないからされないな
Avatar
omochimetaru 8/13/2018 6:43 AM
print(HogeViewController().view) ←これだけで viewDidLoadは呼ばれるのに対して、 viewDidAppearはpresentしないと呼ばれない
Avatar
addChildViewControllerの話に見える
Avatar
omochimetaru 8/13/2018 6:56 AM
didMove の話してるから確かにそうだ
Avatar
んだ。
Avatar
iOSのImageAssetsの命名規約について質問なのですが どこに使用するか限定していない複数の類似画像ファイル名ってどうしてますか? 例えば信号機の赤点灯と青点灯の画像ファイルがあるので ツリーから閲覧しやすいようTrafficlightRed TrafficlightBlueなどグループ名を接尾語に指定したいのですがその他イメージリソースは接頭語にButtonなどを指定しているので関連性が薄れることを懸念しています
Avatar
Kishikawa Katsumi 8/26/2018 4:43 AM
iOSに限らないですが、セオリーとしては目的や用途で名前をつけるのではなく、その画像を識別するための名前を付ける方がうまくいきます。 その上で、わかりやすくしたり、用途を区別したい場合は同じものを指す別の定数を用意するなど、コードで名前を付けて区別するといいです。
4:45 AM
なので、見た目が信号機ならTrafficlightRed、TrafficlightBlueでいいと思いますし、赤や青も丸なら画像のそもそもの名前はCircleRed、CircleBlueなどで参照するようにして、適宜コードでTrafficlightRedなどの別名を付けるのをオススメします。 (edited)
4:47 AM
違う例を挙げると、 「<」「>」<= 左記のような形の画像を用意することはよくあると思いますが、これに back.pdf, forward.pdf という名前を付けるのではなく、 leftArrow.pdfrightArrow.pdf の方がたいていは良いです。
4:48 AM
使う側で適宜、 let backImage = UIImage(named: leftArrow) のように名前をつけます。 色々なところで使われるなら、 backImage を定数などにして参照可能にします。
4:50 AM
コードじゃなくてもAssetをうまく使って同じ画像に別名をつけてもいいです。 要は、似たような画像、または同じ画像を別の用途に使うということは非常に良くあることなので、用途で区別するようにしまうと困ることの方が多いですよ、という話です。 (edited)
👏 3
👍 4
Avatar
ありがとうございます! まさに目的はその様なものなので大変参考になりました🙏
Avatar
🍤ACエビフライ🔌 9/28/2018 1:28 PM
App Storeの段階的リリースについて質問があります。 段階的リリースにした時って、App Storeの説明文や検索キーワードは初日に全部公開されるという理解で合ってますでしょうか? 偉い人から確認されて多分そうだと答えていいか迷っています。
Avatar
段階的リリースのヘルプ読んで知ったけど、あくまでAppの自動アップデートの段階的リリースなのね。
1:51 PM
手動更新であれば、ユーザは更新できてしまうって話なので、初日に全部公開されてそう https://help.apple.com/app-store-connect/#/dev3d65fcee1 (edited)
Avatar
🍤ACエビフライ🔌 9/29/2018 8:22 PM
ありがとうございます!
Avatar
daisukeokaoss 9/30/2018 3:30 AM
すいません。Xcodeって、UIのコンポーネントってどこから持ってこれば良いですかね?なんかXcodeのUIが変わってわからない
Avatar
daisukeokaoss 9/30/2018 4:17 AM
View->Libraries->show libraryで出て来ました。わかりにくい・・・・・・
Avatar
@daisukeokaoss わかりにくいですよね。 Xcode 10 で変わったようです。 Storyboard 等を開いた状態で右上の方にある↓の一番左のボタンからも出せます。
Avatar
daisukeokaoss 9/30/2018 5:41 AM
結構Apple仕様コロコロ変えますよね・・・・・・返信ありがとうございます
🙂 1
Avatar
このボタンからのアクセス、結構便利だなー、と思いましたよ👍
7:28 AM
このボタン、長押しでオプションが出て来ますねー。 (edited)
Avatar
IDEが開いている文書によって適切なものが出てくるのは結構いいですよね。Template出てこなくなったのは地味に困ってますがw
👍 1
Avatar
Kishikawa Katsumi 10/1/2018 7:29 AM
スニペット?
Avatar
ファイルの類です
7:29 AM
新規ファイルをD&Dで置けなくなっちゃった
Avatar
Kishikawa Katsumi 10/1/2018 7:29 AM
あ、.hとかのアイコンのやつか。
Avatar
(多分Xcode 10から)Tabを引っ剥がしてWindowに出来るようになりましたよね。これも地味に便利です👏
Avatar
Kishikawa Katsumi 10/1/2018 7:40 AM
それは前からかな。右クリックでタブで開けるようになった。
Avatar
(そうでしたっけ😅 Thanks!)
Avatar
daisukeokaoss 10/1/2018 11:34 PM
すいません。 @IBAction func getWalk(_ sender: Any) { let pedometer:CMPedometer = CMPedometer() if(!CMPedometer.isStepCountingAvailable()) { print("cannot get stepcount") } //let now = Date() //let oneWeekAgo = Date(timeIntervalSinceNow:604800) let now:NSDate = NSDate() let formatter:DateFormatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd" let from:NSDate = self.stringToDate(date: formatter.string(from: now as Date), isStart: true) let to:NSDate = self.stringToDate(date: formatter.string(from: now as Date), isStart: false) pedometer.queryPedometerData(from: from as Date, to: to as Date, withHandler: {(pedometerData:CMPedometerData!, error:NSError!) in print("\(pedometerData.numberOfSteps)") // 歩数 //print("\(pedometerData.distance)") // 距離 //print("\(pedometerData.floorsAscended)") // 上った回数 //print("\(pedometerData.floorsDescended)") } as! CMPedometerHandler) } private func stringToDate(date: String, isStart: Bool) -> NSDate { let timestamp = (isStart) ? date + " 00:00:00" : date + " 23:59:59" let formatter:DateFormatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" return formatter.date(from: timestamp)! as NSDate } このコードがエラーで実行できないんですよね。 2日ぐらいやってるんですがよくわからなくて
11:34 PM
実行時エラー
Avatar
typealias CMPedometerHandler = (CMPedometerData?, Error?) -> Void なのでキャストに失敗しているみたいです。
Avatar
daisukeokaoss 10/2/2018 2:46 AM
なるほど as! CMPedometerHandler)
2:46 AM
ここですか
Avatar
ひとまず {(pedometerData:CMPedometerData!, error:NSError!) in{ (pedometerData, error) in にすると型推論で型が充てられるので処理が通るようになると思います。 (as! CMPedometerHandler も不要になります。) (edited)
Avatar
daisukeokaoss 10/2/2018 3:20 AM
お!解決しました。ありがとうございます!
👏 1
Avatar
daisukeokaoss 10/3/2018 5:06 AM
エラー
5:08 AM
すいません。このエラーって何が原因かわかりますかね?GetWalkActivityを取得しようとして、エラーになっているんですが
5:08 AM
聞いてばっかりですいません
5:08 AM
検索しても出てこないんですよね
Avatar
Kishikawa Katsumi 10/3/2018 5:16 AM
GetWalkActivityってご自分のアプリの名前ですよね?このログはどの行で表示されるんですか?
Avatar
daisukeokaoss 10/3/2018 5:18 AM
32行目が実行された後みたいですね
5:18 AM
すいません。今解決しました
5:20 AM
let pedometer:CMPedometer = CMPedometer() これが、ローカル変数になっていて、コールバックが呼ばれたときにCMPedometer()がなくなっていてエラー吐いていたようです
5:20 AM
クラスのプロパティに変更したら解決しました
5:21 AM
エラーが直ってる
5:23 AM
@Kishikawa Katsumi さんありがとうございます
Avatar
Xcode10にしてからlldbpo 変数を打った時に、 (lldb) error: Couldn't IRGen expression, no additional errorとなって変数の中身がわからないのですが、どなたか解決する方法知りませんか。 https://stackoverflow.com/q/52420272/1876356 にあるように、 rm -rf ~/Library/Caches/org.carthage.CarthageKit rm -rf Carthage/を試して、 再度ライブラリをupdateしても問題が起きたままなので、困ってます。 (edited)
I can not print debug information in my UI TESTS. Configuration: Xcode 10 and SWIFT 4.2. When I try to print something in console I can only see an error: "error: Couldn't IRGen expression, no
Avatar
質問しようとしたら @ぶるー さんと同じ現象だった…
😫 3
Avatar
ここじゃなくて #lldb の方が良さそうですね ↑の件
👌 1
Avatar
Yuto Mizutani 10/19/2018 2:32 PM
質問させて下さい、 初歩的な質問なのですが、 1. 非同期にDispatchQueueを走らせる場合、循環参照となる可能性があれば [weak self](またはunowned self) を書く必要はありますか? また、 2. ネストした複数クロージャ内も必要に応じてクロージャの都度 weak selfを用いるべきですか? すべきだろう、という理解はあるのですが、なかなかそう書いているコードを見かけないのでこちらで質問させて下さい。。
Avatar
僕は↓のようにしますね。 class ViewController: UIViewController { ... func foo() { DispatchQueue.main.async { [weak self] in guard let self = self else { return } // self を使う処理 DispatchQueue.main.async { [weak self] in guard let self = self else { return } // self を使う処理 } } } }
2:39 PM
2. ネストした複数クロージャ内も必要に応じてクロージャの都度 weak selfを用いるべきですか? すべきだろう、という理解はあるのですが、なかなかそう書いているコードを見かけないのでこちらで質問させて下さい。。
僕もそう思っているのですが、実際みんなどうしているのか興味があります。
(edited)
Avatar
私もkoherさん同様の形ですね。
なかなかそう書いているコードを見かけない
これは多くの人がclosureのネストが嫌いで、まずその形を避けるようにしているから見かけにくいのかなと思います。
Avatar
class ViewController: UIViewController { ... func foo() { weak var wself = self DispatchQueue.main.async { () in guard let self = wself else { return } // self を使う処理 DispatchQueue.main.async { () in guard let self = wself else { return } // self を使う処理 } } } }
11:35 AM
↑こうすると [weak self] の繰り返しは避けられますよ、僕は2重3重になるときはそうしてます。
👍 7
Avatar
DispatchQueue.asyncなんかはワンショットの処理で、循環参照にはならないので、僕はあまりweak使わないですね。ただ、その非同期処理が画面遷移などで必要なくなってればキャンセルしたい場合はweak使ったらいいかなとは思います。
Avatar
キャンセルにweak使うのは微妙だなとずっと思っていて、URSessionのTaskとかRxのDisposeBagなんかはdeinitでキャンセルするのでちゃんとしてて良い感じ (edited)
7:32 AM
積んだQueueが消えるんじゃなくて後で実行時のweakを見て消えたことを知る、みたいなのがなんだか感を感じますね、お手軽なのはわかる
Avatar
まあ同意 コールバックを空にしたところで、 非同期処理自体がキャンセルされてるわけじゃないからね
Avatar
はい、weakでキャンセル相当をしたいわけじゃないけど、上のコードがそういう意図なのかなと思ったので。
Avatar
二重asyncが生じるのは、ワーカーQueueに投げて処理させて、メインスレッドでコールバック ってパターンが多いですね
7:56 AM
そうすると、DispatchQueue.asyncそれ自体しかキャンセルするものがなくて
7:59 AM
こうなりがち
👍 1
Avatar
DispatchWorkItemとか使えばdeinitのタイミングでキャンセルできそうですが明らかにめんどいのでweakしがちですね
Avatar
async はミスリーディングだったかもです。空で書けてぱっと出てくる @escaping な高階関数が DispatchQueue.async だっただけですね😅 foo とかにしておいた方がよかったかも。
4:30 PM
@omochimetaru
↑こうすると [weak self] の繰り返しは避けられますよ、僕は2重3重になるときはそうしてます。
意識的に [weak self] 書いておかないと内側のクロージャ式で誤ってそのまま self 使ってしまいそうな・・・。まあ、 [weak self] 書き忘れでも同じことにはなるんですが。個人的には wself の名前問題も発生しないし、 [weak self] 繰り返しの方が好みですね。
Avatar
Yuto Mizutani 10/21/2018 7:28 PM
コールバックを空にしたところで、
非同期処理自体がキャンセルされてるわけじゃないからね なるほどです。 weak以外でキャンセルできるように作るのが良く、そうでない場合はやはりweak selfの記述は必要なのですね あとはどう避けるか、ですか。勉強になりました!ありがとうございます😊
Avatar
すみません、こちら(https://qiita.com/k-yamada-github/items/f0a90a6e91f38bd6d9b9 )の記事を丸パクリでUIViewからUIImageを生成する実装をしたのですが、生成したあとのメモリが開放されない現象が発生してしまいました。アドバイスもしくは、おすすめの記事や教材を教えていただけないでしょうか? (edited)

Problem

  • UIViewからUIImageを作成したい。
  • UIImageの背景は透明にしたい。
  • 画質は低下させない。

Solution

```swift

Swfit2.3

import UIKit ...
Avatar
Kishikawa Katsumi 11/9/2018 6:12 AM
^ このコードをそのまま書いたとしたらメモリが解放されないことはなさそうです。 どうやって解放されてないことを確認しましたか?
Avatar
実際に私が制作しているアプリの中で実装している機能の一つで、 アルバムから画像を取得 ↓ UIScrollView上でResize ↓ UIScrollViewと同じ位置に配置した透明のUIViewから新たにUIImageを生成 ↓ UIImageをサーバー側に送信 という流れで実装していたのですが、
6:22 AM
UIScrollView上でResizeまではメモリも20MB程度で抑えられていたのですが、変換した際に40MBまで上昇し、サーバーに送信してもなおメモリは40MBにとどまってます
6:23 AM
ちなみにアルバムから画像を取得したりPostする際に使用したViewControllerは解放できてます。
6:30 AM
class ViewController: UIViewController { var hogehoge: UIView = UIView() func piyopiyo() { NotificationCenter.default.post(.hoge, object: hogehoge.snapshotImage()) self.dismiss(animated: true, completion: nil) } } extension UIView { func snapshotImage() -> UIImage? { UIGraphicsBeginImageContextWithOptions(bounds.size, false, 0) guard let currentContext = UIGraphicsGetCurrentContext() else { UIGraphicsEndImageContext() return nil } layer.renderInContext(currentContext) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } }
6:30 AM
大まかに実装の流れを書いてみました
Avatar
Kishikawa Katsumi 11/9/2018 6:30 AM
オブジェクトが解放されてないかどうかというよりは、UIImageを描画するために使われたメモリが残ったままのようだ、ということですね。 それがいつ解放されるかは自明ではないので、繰り返しやってみて本当に線形に使用量が増加し続けるかどうかとか、調べてみるといいと思います。ある程度増えたら適当なタイミングで減ったりするんじゃないかと思います。
👍 4
Avatar
なるほど、
6:31 AM
ありがとうございます!
Avatar
昔、新規にXcodeでプロジェクトを作ってCoreDataが使いたければ、project settings の Linked Frameworks and Libraries の +ボタンを押してCoreData.frameworkを明示的に追加する必要があった気がしますが、いまだとおもむろにコード中で import CoreData とか書いてやればすぐに使えるようになってる気がするんですが、これってどういうことなんでしたっけ?昔からでしたっけ (edited)
5:36 PM
あーこいつのおかげか。Xcode5からの機能とのことで4年前のお話でした。時間が過ぎるのは早いですね・・・ https://stackoverflow.com/questions/33728359/when-do-you-have-to-link-frameworks-and-libraries-to-an-xcode-project
Background: I started a test Swift project to understand and expand my knowledge on how to implement CoreData into my projects. And of course whenever I'm just testing and playing around with code, I
👏 3
Avatar
それが無かった頃はいろんなシステムフレームワークを、リンカエラーを見ながらシンボル名から予想してぽちぽち追加してました
😂 2
12:53 AM
QuartzCoreとかがprefixから予想できなくてハマりがち
Avatar
画面録画した際の解像度を録画せずに取得したいのですが、何か取る方法ご存知の方いますか? iPhoneXあたりから実際の画面解像度よりも小さいサイズで録画されるようなのです
Avatar
Apple Payの登録をアプリ内で行う処理書いたことある人っていたりしないだろうか?? Apple の人から教えてもらった「こうすると出来る」って方法が、筋違いな内容で…つらい
Avatar
in-app provisioningですか?
Avatar
たぶんそれです。 https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/ApplePayandPassKitEntitlements/ApplePayandPassKitEntitlements.htmlIn-app provisioning of payment cards.+PKAddPaymentPassViewController使えばアプリ内でApple Payの登録画面を呼び出せるって認識で合ってるんですかね?
Describes the entitlement keys for App Sandbox, iCloud, Push Notifications, and shared app containers.
Avatar
ですね、ただしAppleから特殊なpermissionをAppIDに対して付与してもらう必要があります
12:16 PM
permissionがないと上のVCは表示されないかと思います
Avatar
あぁやっぱりですか…permissionない状態でentitlements記述したら、その時点でbuild errorで、entitlementsなかったらVC生成時にnilが返りましたね。 付与されるのは、てっきりteamIDかと思ってましたがAppID側なんですねーありがとうございます。ひとまずpermission取得する方向で動きます
12:14 AM
any sizeの必須でリジェクトされる場合の具体的な例ってどんな感じになるのか想像できない
Avatar
vicktorManuel 6/29/2019 12:52 PM
some people had problems with suica in iphone 13?
Avatar
Apple Payのアプリ内で設定する方法、調べていった結果permissionをAppleから付与してもらう方式は昔の話で、今は異なっていました。 最新の方法では、PKPaymentViewControllerをただpresentするだけで良く、 端末にカードが登録されApple Payが使える → 決済シートが表示される 端末にカードが登録されておらずApple Payが使えない → Apple Pay登録の画面が表示される → Apple Pay登録完了すると決済シートが表示されている また、この挙動は実機のみで確認可能で、少なとくもiOS 11以上から自動でこういう遷移を行ってくれる様子。
Avatar
PKPaymentViewController と言っているのはこれのことですか?↓ https://developer.apple.com/documentation/passkit/pkaddpaymentpassviewcontroller
5:17 AM
あ、確かに実機なら表示まではできたかも。ただそこから登録処理進めるとdelegate呼ばれるところあたりでエラーになりませんかね?
Avatar
PKPaymentViewController と言っているのはこれのことですか
あぁそうです。正しくは PKAddPaymentPassViewController でした。 手元の検証機iPhone X (iOS 12.1)では、 アプリ内でApple Pay登録処理 > 登録完了 > 決済シートが表示 の流れで動作していてエラーは確認していませんね🤔
Avatar
ほうほう、登録処理ではカード番号は手入力するかんじですか?
Avatar
ですね。
Avatar
ああであれば
6:24 AM
>>in-app provisioningですか? とは別の話でしたね、すいません
Avatar
おや、別の話だったのですか…そうすると最初から自分が勘違いしていただけなような気がしてきました😅 ふむ。
2:31 AM
この辺のObjectiveC例外投げるからSwiftから使い物にならない族
2:31 AM
まとめて全部deprecatedになってた
2:31 AM
/* The API below may throw exceptions and will be deprecated in a future version of the OS. Use their replacements instead. */
(edited)
2:33 AM
- (nullable NSData *)readDataUpToLength:(NSUInteger)length error:(out NSError **)error API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)) NS_REFINED_FOR_SWIFT; @available(iOS 13.0, *) open func __readDataUp(toLength length: Int) throws -> Data
2:33 AM
Swift向けの名前がダブルアンスコの謎なやつになってる・・・
2:34 AM
ドキュメントにはSwift版が存在してない
Avatar
Deleted User 9/9/2019 3:24 AM
cocoapodsを使っているxcodeprojでOpenCVを使おうとしているのですが,PodfileにOpenCVを追加してbridging headerを作成するのがベターですか?
Avatar
Kishikawa Katsumi 9/9/2019 3:47 AM
OpenCVはC++なのでBridging Headerを作ってもそのままではSwiftからは使えないと思います。
3:48 AM
Objective-C++でラップしたものをObjective-Cのインターフェースで公開して、それをSwiftから使う(Bridging HeaderなりModule Mapなりで)、方法になると思います。
3:49 AM
導入はすでにCocoaPodsを使ってるならCocoaPodsで入れるのが一番簡単だと思います。
Avatar
Deleted User 9/9/2019 4:53 AM
なるほど,そうなりますか.ありがとうございます. (edited)
Avatar
Kishikawa Katsumi 9/9/2019 6:13 AM
OpenCVSwiftみたいなのを作ったらウケるかな?🤔
👍 3
Avatar
Deleted User 9/9/2019 6:50 AM
https://github.com/vvmnnnkv/SwiftCV SwiftPMならあるようですね S4TFに合わせてるっぽいしsystemのopencvをみてるんですね
Minimal Swift for TensorFlow OpenCV bindings. Contribute to vvmnnnkv/SwiftCV development by creating an account on GitHub.
Avatar
Kishikawa Katsumi 9/9/2019 6:55 AM
iOS以外ならこれで良さそう。SwiftCVって名前良いな。
Avatar
どこで質問するのが良いのか悩ましいのですが、iPadOS13.4から使えるようになった日本語のライブ変換をアプリ内のtext FieldやtextView毎の設定で無効にする事って可能でしょうか? APIの方が漢字に非対応なので、勝手に漢字に変換されると操作性に難が…
Avatar
日本語のライブ変換、検索フィールドでは無効になるので、keyboardTypeを.webSearchにすれば無効になるはずです
😆 2
Avatar
Kishikawa Katsumi 4/22/2020 1:22 PM
そんな手が。そしてSafariの検索バーでライブ変換できないのは意図した挙動ということか。
💡 1
Avatar
Kishikawa Katsumi 4/22/2020 3:12 PM
ということはSafariの検索バーでライブ変換できないのちゃんと改善要求しようかな。
Avatar
フィードバックは大事
Avatar
Kishikawa Katsumi 4/22/2020 3:12 PM
検索バーを特別扱いする理由はおそらくサジェスチョンとかオートコンプリートとバッティングするからじゃないかと勝手に思っています。 (edited)
Avatar
検索バーでライブ変換できないって言い方はちょっと違って、無効になってるのは日本語のライブ変換だけなんですよね
3:15 PM
中国語のライブ変換は有効
3:16 PM
macOSも同じ挙動
Avatar
TextInput.framework は闇
3:17 PM
状態遷移に問題あってクラッシュする
3:18 PM
昨日一日中戦った感想
Avatar
Kishikawa Katsumi 4/22/2020 3:22 PM
日本語だけなのか。それはむしろレポートしやすそうだ。
Avatar
試したら回避できました。こんな回避策があるとは…将来は塞がれそうですけど、一旦これ採用させていただきます!
Avatar
omochimetaru 4/25/2020 5:35 PM
@niw KeyboardGuide めっちゃ良い
5:35 PM
@IBDesignable public final class FormScrollView: UIScrollView { public override func didMoveToSuperview() { super.didMoveToSuperview() if let superview = self.superview { bottomAnchor.constraint(equalTo: superview.keyboardSafeArea.layoutGuide.bottomAnchor).isActive = true } } public override func layoutSubviews() { keyboardDismissMode = .interactive super.layoutSubviews() } }
5:35 PM
これでキーボード対応終わった
😮 1
⌨️ 1
5:41 PM
ScrollViewのもともとのbottom constraintをpriority 750にしておかないといけないけど、うっかり1000のままだとInterface builder上でconflictが出るから気付ける・・・
Avatar
IBは警告してくれるのか。。
Avatar
omochimetaru 4/25/2020 7:40 PM
あ、それはあれかも
7:40 PM
あ〜そうだ。conflictが出た時は
7:40 PM
scrollviewをsafearea.bottomにつないでたから
Avatar
dismiss mode の interactive 対応は、じつはもいちょっと激しいのが必要なんだけど入れてないな。
Avatar
omochimetaru 4/25/2020 7:41 PM
iPhone11だと、keyboard safe areaがview.bottomだから
Avatar
dismiss中に連続して位置を変えるってやつ。
Avatar
omochimetaru 4/25/2020 7:41 PM
フチの分ずれたんだ。 safearea.bottomになおしてるから、コンフリクトでなくなっちゃった。
Avatar
なるほど
Avatar
omochimetaru 4/25/2020 7:42 PM
あ〜そうなんですか >interactive対応
7:42 PM
なんかスクロールバーがバキバキ変形して笑ったんだけど
7:42 PM
試したらTwitter.appもそんな雰囲気だったから
7:42 PM
まあいっかって思ったところだった。
Avatar
すごいハックは必要なんだよね。
7:42 PM
一般化が難しい
7:43 PM
今のも十分ハック満載なんだけど。
Avatar
omochimetaru 4/25/2020 7:43 PM
ふむ〜
Avatar
いろいろ追加要素あるな、、またアップデートするか、、
7:46 PM
Twitter app は何種類か違う実装が入ってて
7:46 PM
歴史を感じれるふうになってるので
Avatar
omochimetaru 4/25/2020 7:46 PM
ww
Avatar
場所によって挙動が違うはず
Avatar
omochimetaru 4/25/2020 7:46 PM
なるほど。
Avatar
Twitterは機能のv2が作れないことで有名なのでしょうがないよね
7:47 PM
ビジョンが薄い
Avatar
あぁ〜わかりました。
11:14 PM
interactiveでゆっくり引っ張ると
11:14 PM
scrollViewの下端がついてこなくて裏が見える。
Avatar
そそ。
Avatar
omochimetaru 4/26/2020 4:20 AM
onDragにかえた。
Avatar
interactiveへの対応ちょっと考えよう。
Avatar
omochimetaru 4/26/2020 9:59 AM
わ〜い
Avatar
omochimetaru 4/27/2020 5:50 AM
さっきの方法でscrollbarのbottomをkeyboard safe areaにつなげている状態で、 ScrollBarの中に2つのUITextFieldがあり、 UITextField1 にカーソルがある状態で、 UITextField2 を選択すると
5:50 AM
UITextField1に入力済みの文字列が 一瞬だけ 左に ビヨンッ ってバネっぽい動きをする 謎の現象が起きてしまっている。 (edited)
5:55 AM
@niw ↑って既知ですか? それとも巧妙な条件で僕だけ踏んだやつ?
Avatar
左に...?
Avatar
omochimetaru 4/27/2020 5:56 AM
むむ。謎現象か。
5:56 AM
多分この説明で意味不明ならそうなんだろう・・・
Avatar
左にビョンっはぱっと思いつかない。原因はわからんでもないけど。
Avatar
omochimetaru 4/27/2020 5:57 AM
ちょっとまってくださいね、見せられる状態にして動画取る
Avatar
(現在 MacBook Pro のバッテリーが心配な状況になって、この状態でマジかーと思ってる)
5:59 AM
(たぶん、セルが一個死んだ)
Avatar
omochimetaru 4/27/2020 6:01 AM
DiscordのDMで動画送りました。 (edited)
Avatar
おー
6:06 AM
びよん
6:06 AM
初めてみた。
Avatar
omochimetaru 4/27/2020 6:06 AM
え〜まじか
6:06 AM
特殊なことはほぼしてないつもりだ・・・
Avatar
これ UITextField 切り替わるときにresponder が切り替わって
6:07 AM
いっしゅんキーボードきえてるんだと 思う。
6:07 AM
キーボードの表示非表示はじつはアニメーションブロックで起こるので、
6:08 AM
KeybordGuideではlayoutSubviewをその中で呼んでauto-layoutを更新して
6:08 AM
キーボードの表示非表示アニメーションに同期するようになってる。
6:08 AM
たぶんそれが原因。
6:09 AM
これのコントロールむずいんだよなあ...
6:09 AM
API側には知り用のないコンテキストが必要で。
Avatar
omochimetaru 4/27/2020 6:10 AM
ふむふむ
6:10 AM
keyboard safe areaは UIScrollView の bottomにしかつないでないけど
6:10 AM
どうして文字が左にズレるんでしょう?
6:10 AM
仮に keyboard safe areaが一瞬めちゃくちゃなサイズになっていたとしても、
Avatar
updateLayoutGUideConstraints(prefersLyaout:)
Avatar
omochimetaru 4/27/2020 6:10 AM
現象に至る経路が想像つかない・・
Avatar
がfalseなら起こらないと思うよ
6:11 AM
ためしに変えてみて。
6:11 AM
KeyboardSafeArea.swiftのline 135で
6:11 AM
false渡す
6:12 AM
左にずれるっていうか
6:12 AM
原点にズレてるんだよね
6:12 AM
CGPointZero
6:13 AM
たぶんUITextFiledは文字入力が確定すると、入力された文字と同じラベルみたいなのを作るんじゃないかな。
6:13 AM
viewが作られると原点におかれれてそのあとframeを任意の位置に変えると思うけれど
6:13 AM
それがUIViewのanimation blockで実行されちゃう。
Avatar
omochimetaru 4/27/2020 6:13 AM
なるほどwwww
6:14 AM
UIKit内部にテンポラリな処理がanimation blockにつつまれて
Avatar
それはキーボードの位置が変わったっていう通知はUIViewのanimation blockのなかでおこるから。
6:14 AM
これ全然知られてない事実なんだけど。
Avatar
omochimetaru 4/27/2020 6:14 AM
ただの途中の値であるゼロ値が、アニメーションに巻き込まれて、それで左にあるのか (edited)
Avatar
たぶんそんな感じ。
Avatar
omochimetaru 4/27/2020 6:14 AM
ちょっとやってみますね>prefereslayout
Avatar
ただ、これfalseにして解決した場合、アニメーションしなくなるので厳しい
Avatar
omochimetaru 4/27/2020 6:18 AM
ほんとだ、なおった。
Avatar
だよねえ。
Avatar
omochimetaru 4/27/2020 6:18 AM
[omochi@omochi-iMacPro KeyboardGuide ((0.2.0))]$ git diff diff --git a/Sources/KeyboardGuide/KeyboardSafeArea.swift b/Sources/KeyboardGuide/KeyboardSafeArea.swift index 5e0be39..9f27ba8 100644 --- a/Sources/KeyboardGuide/KeyboardSafeArea.swift +++ b/Sources/KeyboardGuide/KeyboardSafeArea.swift @@ -132,6 +132,6 @@ extension KeyboardSafeArea: RelativeLayoutInWindowViewDelegate { extension KeyboardSafeArea: KeyboardGuideObserver { public func keyboardGuide(_ keyboardGuide: KeyboardGuide, didChangeDockedKeyboardState dockedKeyboardState: KeyboardState?) { - updateLayoutGuideConstraints() + updateLayoutGuideConstraints(prefersLayout: false) } }
6:18 AM
でもたしかにこれは副作用がありますね。 キーボードがニュルッと出てくる時に
Avatar
そう。
Avatar
omochimetaru 4/27/2020 6:19 AM
ScrollView.bottomが、先に動いちゃうから
Avatar
でもそれとこれとの違いはSiri用がないんだよ...
Avatar
omochimetaru 4/27/2020 6:19 AM
無がチラ見えする
Avatar
ひどい変換w
6:20 AM
UITextField悪いとも言える
Avatar
omochimetaru 4/27/2020 6:20 AM
bottom anchor constarintはるんじゃなくて、insetを変更する方法もあるけど
6:20 AM
The important layout behavior If your view doesn’t have any sub views that have at least one constraint to view.keyboardSafeArea.layoutGuide, UIKit MAY NOT call layoutSubviews (or similar callbacks such as viewDidLayoutSubviews).
niw さんのこの注意書きが
6:21 AM
しぶい雰囲気がしたので避けている
Avatar
inset変更だと2TextField間の問題は発生しなかった記憶
Avatar
それはhackなんですよ...
Avatar
omochimetaru 4/27/2020 6:21 AM
いままでは自作の作りでinset.bottomを変更してた。
Avatar
autolayoutはinsetがね...
Avatar
omochimetaru 4/27/2020 6:21 AM
でもKeyboardLayoutGuideの場合はinset.bottomを変えるのは非推奨っぽいから。 (edited)
Avatar
変えられないから。
6:22 AM
非推奨ではないですよ
Avatar
omochimetaru 4/27/2020 6:22 AM
ふむ
Avatar
なんだろう、わかって使ってねっていう感じ
Avatar
omochimetaru 4/27/2020 6:22 AM
@tarunon > inset変更だと2TextField間の問題は発生しなかった記憶 これはkeyboard layout guide関係なく、発生するケースが有るってこと?
Avatar
autolayoutじゃない環境でイベントハンドリングを全部自動でするのは困難で制約があるから
6:23 AM
そこんとこよろしくって感じ
Avatar
omochimetaru 4/27/2020 6:23 AM
ふむ
Avatar
UIScrollViewに、セーフエリアやFloatingを考慮したKeyboardのinset変更を加える、というので大体いつも解決していて、そうした場合には2TextFieldの問題は発生したことがなかった。
Avatar
omochimetaru 4/27/2020 6:23 AM
「2 text field 問題」という概念自体初めて知った。(これまでinset式しかやったことなかったからで、メジャーなの? (edited)
Avatar
disable animationするという方法もある
Avatar
ScrollViewのbottom constraintを書き換える方法は、TextFieldに関わらず他の問題も色々遭遇してやらないようになった、という感じです。
Avatar
omochimetaru 4/27/2020 6:24 AM
他の問題もあるのかよw
Avatar
Keyboardのdismissをinteractiveにすると破綻が生まれるとか、結構渋いのが色々あって
Avatar
omochimetaru 4/27/2020 6:24 AM
出たinteractive問題
Avatar
楽だけど壊れるな~という印象が強い
Avatar
interactiveはなあ
6:25 AM
Appleの実装がすでに手厳しい
Avatar
UITableViewController / UICollectionViewController / UI(WK)WebViewは、発生する多くの問題をちゃんとクリアしていて、ScrollViewの相応の実装がofficialに存在しないのはまじで納得がいかない (edited)
Avatar
omochimetaru 4/27/2020 6:26 AM
これって、 keyboard will show notification とか発生する時に
6:26 AM
KeyboardLayoutGuideさんは最初のsetup呼んでるから先にnotification処理終わってるんですかね (edited)
Avatar
omochimetaru 4/27/2020 6:27 AM
あ〜え〜っと
6:27 AM
inset変更方式に書き換えるならどうやろうかなと思っていて
6:29 AM
いつもは UIWindow.keyboardWillShowNotification の通知処理のタイミングで
6:30 AM
contentInset.bottomを書き換えたりしているんですが、 そこの座標計算だけサボって、KeyboardLayoutGuideの情報でやろうかなと
6:31 AM
でも view.keyboardSafeArea.insets.bottom の値の更新と前後順の問題が出るかな?と思った。
Avatar
えっとね
Avatar
omochimetaru 4/27/2020 6:33 AM
(そういえば、自作の実装は結局 UIScrollView の onDrag とか interactive とうまく共存できなかったような気もしてきた (edited)
6:33 AM
textView == UIScrollView です
6:34 AM
useContentInsetsSwitch.isOn のケース
Avatar
omochimetaru 4/27/2020 6:34 AM
ああサンプルちゃんと見てなかった。すいません。あるんですね。
Avatar
これの肝は viewDidLayoutSubview でも呼んでいるところ。
6:35 AM
これが autolayout が貼られていると、viewにサイドエフェクトが出るので
6:35 AM
キーボードが出たり入ったりするときに自動で呼ばれますよ
6:36 AM
(でも制約の付け方では呼ばれないこともあるから自分でそこんとこは考えてちょうだい、こればっかりはむづかしいね)
6:36 AM
っていうのが README に書いてあったこと
Avatar
omochimetaru 4/27/2020 6:36 AM
なるほど。
Avatar
KeyboardGuideObserver実装しちゃうてもある
6:39 AM
なんていうかautolayoutとかinsetとかの部分はおまけっていう言い方もあれだけど、UIKit的にAPIが全てのケースを知るのは困難で
6:39 AM
最大公約数てきな実装になっちゃうんだけど(だから実用段階でいろいろとこのケースは厳しい、みたいなのがでちゃう)
6:40 AM
ここがこのライブラリの価値といっても過言ではないので
6:40 AM
それ以外は、うーんうまいこと行く方法をいろいろ実装しておくしかないかなあという感じ
6:40 AM
時間がかかる部分
Avatar
omochimetaru 4/27/2020 6:41 AM
ああなるほど。dockedKeyboardStateを計算するときにいろいろな話があって
6:41 AM
あとこれ
6:41 AM
基本このファイルに実装されている内容が肝ですね
Avatar
omochimetaru 4/27/2020 6:41 AM
KeyboardGuideObserver用意するとその計算結果の恩恵だけうけるスタイルになるのか。
Avatar
ドキュメントにのってないし、誰も知らない情報って奴です
6:42 AM
で、これを網羅的に実装するのは、あとしてる実装はほぼインターネットにない
Avatar
omochimetaru 4/27/2020 6:42 AM
@objc public func applicationDidEnterBackground(_ notification: Notification) { guard isShared else { return } lastFirstResponder = UIResponder.currentFirstResponder }
Avatar
手抜きしてるかどっか間違ってるのばかり
Avatar
omochimetaru 4/27/2020 6:42 AM
なるほど・・・
Avatar
それはねー
6:43 AM
知らないよねそんなのね
Avatar
omochimetaru 4/27/2020 6:43 AM
UIKitのAPIがバックグラウンドに行くときって
6:43 AM
だいたいうまいこと、イベントだけ止めておいて
6:43 AM
アプリ側あんまり気にしなくてもうまいこと再開したりするけど
6:43 AM
キーボードの位置についてはそうでもないのか。
Avatar
そう。
Avatar
omochimetaru 4/27/2020 6:43 AM
なるほど。深い
Avatar
これはspringboard実装してるチームと
6:44 AM
UIKit実装してるチームが別なことに起因してると思う
6:44 AM
springboard実装してるひとは、よし全方向のサムネとるためにアプリに全部のlayout送ってやるぜってなってるんだけど
6:45 AM
UIKit側はえーっとバックグランドはいるので通知とめますね〜
6:45 AM
っていって止めてくるので
6:45 AM
状態を知る術がなくなる
6:45 AM
のに状態を変えてくる
6:45 AM
どうないせいちゅうねん
6:45 AM
っていう感じ
Avatar
omochimetaru 4/27/2020 6:46 AM
Keyboardの状態って現在の状態を取る方法無いですよね
6:46 AM
通知で知るしかない
Avatar
現在の状態取れればこんなに困ることはない
Avatar
イマイチな方法つかうと知れるけどね
Avatar
omochimetaru 4/27/2020 6:46 AM
そうだよね、話の構造がわかってきた。
Avatar
一応UIApplication.main.windowsから掘ると取れないことはない、のかな
Avatar
それは .interactive の対応で必要
6:46 AM
そこからは無理
Avatar
omochimetaru 4/27/2020 6:46 AM
www
Avatar
昔はできたけどね
6:47 AM
iOS 9くらいでできなくなった
Avatar
今もうできないんスカ
6:47 AM
カナシー
Avatar
omochimetaru 4/27/2020 6:47 AM
interactiveの対応ってそんな事になるの。。。
Avatar
キーボードはもう完全に別世界に住んでる
Avatar
omochimetaru 4/27/2020 6:47 AM
あのジリジリ変形してる最中って常にイベント飛びまくってるわけじゃないのか。
Avatar
interactiveは特殊なUIDragGestureがいてですね
6:47 AM
UIScrollViewだけがそれを持っていて
Avatar
omochimetaru 4/27/2020 6:47 AM
アニメーションの中のトランザクションの継続中みたいな扱いなのかしら
Avatar
あ、違う
6:48 AM
あれは毎回移動してる
Avatar
omochimetaru 4/27/2020 6:48 AM
ふむ
Avatar
その特殊なDrag Gesture Recognizerは実は公にアクセスできるんだよね。 (edited)
6:48 AM
その辺を組み合わせて使います
Avatar
omochimetaru 4/27/2020 6:48 AM
gesture.changed取れるのか。 (edited)
6:51 AM
let textViewBottomAnchorConstraint = useContentInsetsSwitch.isOn ? textView.bottomAnchor.constraint(equalTo: view.layoutMarginsGuide.bottomAnchor, constant: -spacing) : textView.bottomAnchor.constraint(equalTo: view.keyboardSafeArea.layoutGuide.bottomAnchor, constant: -spacing)
6:52 AM
あいや、これは無いとちゅうぶらりんで困るからつなげてるだけか
6:53 AM
サンプルとREADMEの、viewDidLayoutSubviewsやlayoutSubviewsを発生させるために、view.keyboardSafeArea.layoutGuideにconstraintをつないでないと
6:54 AM
キーボードになんかあってもlayoutSubviewsが発生しないことがあるよって話をちゃんと理解したくて
Avatar
はい
Avatar
omochimetaru 4/27/2020 6:54 AM
サンプルコードの場合は
6:54 AM
Shwo keyboard safe area 機能のために、つながってるから
6:54 AM
発生するってことですかね?
6:55 AM
これ消してみたらいいのか
6:56 AM
確認できた。
Avatar
そんな感じ
Avatar
omochimetaru 4/27/2020 6:57 AM
そうすると、使わないけどなんかつないでおけばいいんですね。
6:57 AM
priority=1にでもしておくか。
Avatar
auto layout engineが依存関係を解くときに
6:57 AM
影響をうけると
6:57 AM
layoutを呼んでくれるので
6:57 AM
マニュアルレイアウトも実施できる
6:57 AM
そんな感じです
6:58 AM
auto layoutだけがwindowとの相互関係を
6:58 AM
深くまで運んでくれるので
6:58 AM
こういうことができるのです
Avatar
omochimetaru 4/27/2020 6:58 AM
運んでくれるw
Avatar
そうじゃない場合は自分で考えてねって感じ
6:58 AM
というのもREADMEに書いてあるな
6:59 AM
コロナうず前のことはもう忘れてしまった
Avatar
windowとの相互関係考えないと、確かBluetoothとかiPadのFloatingで死んじゃうようになった気がする
Avatar
そうなのよねえ
Avatar
omochimetaru 4/27/2020 7:00 AM
Bluetoothw
7:00 AM
考えたことないわヤバそう
Avatar
keyboardが住んでるのはグローバルなUIScreenの世界
Avatar
Bluetoothキーボードは結構ひどくて、画面外領域にキーボードは実在する!!みたいになってて腰を抜かした覚えがある
Avatar
omochimetaru 4/27/2020 7:00 AM
www
Avatar
一介のUIViewにはなにもわからない
7:01 AM
じつはiOSは UIScreen 複数持てるので (edited)
7:01 AM
その状態でキーボードだすと楽しい
7:02 AM
意味不明な動きをする
Avatar
あーーー
Avatar
なんか横向きに変な位置にでたりとか
7:02 AM
作ってる側もわかってない状態
7:02 AM
UIWindowじゃないや、UIScreenね。
7:03 AM
外部ディスプレイ。
Avatar
UIScreen複数はやったことないな
7:03 AM
Keynoteが実装してるアレですよね
Avatar
ビデオ再生だけやろって思われてる節ある
Avatar
omochimetaru 4/27/2020 7:06 AM
7:06 AM
priority = 1の無意味なやつ仕込んだらviewDidLayoutSubviews呼ばれるようになる。
Avatar
でしょ
7:07 AM
layout engineのキモチ的に呼ばなきゃってなる
Avatar
omochimetaru 4/27/2020 7:07 AM
でもどうなんだろう、制約解決で棄却されたconstraintに関連する人たちも呼ばれるかって (edited)
7:07 AM
実装詳細な気がする
Avatar
そうなんだよね
7:08 AM
だから README は //MAY// なんだよ
Avatar
omochimetaru 4/27/2020 7:08 AM
layout engineの実装者の気持ちとしては、そこまで考えずに、通知対象たちを雑に集めてそうだけど。
Avatar
omochimetaru 4/27/2020 7:08 AM
魔がさして最適化した結果呼ばれなくなりうる
Avatar
まあでも多分それはないかなって思ってる
Avatar
omochimetaru 4/27/2020 7:09 AM
//MAY//
なるほど・・・
Avatar
これはキーボード関係なく、
7:09 AM
manual layoutとauto layoutの共存の話なので (edited)
7:10 AM
レイアウトが起こったという通知を(結果が変わらなくても)するのは
7:10 AM
責務だと思う。
7:10 AM
ま、appleのことだからころっと変えるかもだけど
7:10 AM
きっと Swift UI にengineering resourcesが流れるので (edited)
7:10 AM
UIKit はもう変わらないんじゃないかなあ
Avatar
omochimetaru 4/27/2020 7:11 AM
なるほどw良い意味で枯れてくれる説
Avatar
AppKit 的な感じに
Avatar
omochimetaru 4/27/2020 7:30 AM
下だけpriority=1でつなぐのダメでした・・・
7:31 AM
ViewControllerがフルスクリーンでpresentしてるときはviewDidLayoutSubviews呼ばれないw (edited)
7:31 AM
+++ b/Examples/Example/Sources/ViewController.swift @@ -64,6 +64,7 @@ class ViewController: UIViewController { swiftViewController.delegate = viewController let navigationController = UINavigationController(rootViewController: swiftViewController) + navigationController.modalPresentationStyle = .fullScreen viewController.present(navigationController, animated: true, completion: nil) })
7:33 AM
見えないSafeAreaLayoutGuideを置いちゃうのが安定しそうだな。
Avatar
うーむ、、
Avatar
omochimetaru 4/27/2020 7:39 AM
.contentInset に直接 contraint がつなげられたらいいのにな
8:12 AM
ひとまずこんな感じで着地しました。@niw ありがとうございました! あ、だめだ、ブルッとする。 (edited)
Avatar
ぶるっ
Avatar
omochimetaru 4/27/2020 8:17 AM
なんか残っちゃってるかな
Avatar
アニメーションのなかでレイアウトが呼ばれることには変化がないというか...
Avatar
omochimetaru 4/27/2020 8:17 AM
ですね
Avatar
あとたぶん accessibiliyLabel じゃなくて identifier だと思う
8:19 AM
それだと Voice Over が読んじゃう
Avatar
omochimetaru 4/27/2020 8:19 AM
Labelのほうじゃないと、View Tree Debugger で見えない
8:19 AM
Voice Over なるほど
Avatar
A11y蔑ろにされすぎ
8:20 AM
I18nと同じ流れ
Avatar
omochimetaru 4/27/2020 8:20 AM
↑のView Tree Snapshot?の、左のツリーのところに名前を出したいんですよね
8:20 AM
デバッグしてる時にすぐ見つけたいから。
8:21 AM
Identifierのほうだと選択して右ペインの詳細で見える
Avatar
んー、なにが使われるんだろう。Xcodeがアレという見方も...
8:22 AM
それはさておき、たぶん... animation入る前にレイアウト一回すれば良いので
8:22 AM
タイミング正しいかわからないけれど、resignするタイミングで一回layoutSubviewしてみてください
Avatar
omochimetaru 4/27/2020 8:23 AM
UIVIewController.viewDidLayoutSubviewsでも同じだった・・・ここもまとめて実行されてるのか
Avatar
layoutIfNeedeという意味です
Avatar
omochimetaru 4/27/2020 8:23 AM
resignするタイミング?
Avatar
UIcontrolが通知出す
8:23 AM
やつ
8:23 AM
それかdelegate
8:25 AM
たぶん間に合うんじゃないかな
Avatar
omochimetaru 4/27/2020 8:25 AM
なるほど
Avatar
わかんないけど。
8:26 AM
お布団が誘ってくるので健闘を祈ります...!
Avatar
omochimetaru 4/27/2020 8:26 AM
そういうことか。
8:26 AM
うおおおお
8:26 AM
ブルッとしなくなった
Avatar
よかった
8:27 AM
合ってた
Avatar
omochimetaru 4/27/2020 8:27 AM
public func textFieldDidEndEditing(_ textField: UITextField) { print("A") } public func textFieldDidEndEditing(_ textField: UITextField, reason: UITextField.DidEndEditingReason) { print("B") layoutIfNeeded() }
8:27 AM
そういうことか・・・
Avatar
autolayoutとアニメーションは
Avatar
omochimetaru 4/27/2020 8:27 AM
アニメーションの起点が0になっちゃってるのをここで強制レイアウト実行で、正しい場所にする処理を割り込ませて
8:28 AM
ブルッとする起点の0を打ち消した?
Avatar
レイアウトのタイミングをこちらで制御しないとダメなのですよね
Avatar
omochimetaru 4/27/2020 8:28 AM
なんかありますね。アニメーションブロックの中でlayoutIfNeedすると変わるやつ。
Avatar
そんな感じ
Avatar
omochimetaru 4/27/2020 8:28 AM
じゃあこれ最初のConstraint方式でいけるな
Avatar
まあどっちが良いかは
8:29 AM
スクロールバーの挙動とかもあるので
8:29 AM
ケースバイケース
Avatar
omochimetaru 4/27/2020 8:29 AM
なるほど。
Avatar
(insetとbottom)
Avatar
omochimetaru 4/27/2020 8:29 AM
ああ、そうですね、insetかbottomのどっちを変更するのか、って言い方が正しいですね
Avatar
ぶるっってのはたぶん根本はUITextFieldの実装がダメ (edited)
Avatar
適当なチャネルがなかったので。 ↓のように nil if initialization fails と書かれているのに failable initializer じゃないのはなぜ?
Return Value An asset reader wrapping track, using the setting defined by outputSettings, nil if initialization fails.
https://developer.apple.com/documentation/avfoundation/avassetreadertrackoutput/1385807-init
Avatar
Kishikawa Katsumi 4/28/2020 8:53 AM
ホントだ。これnilが返るパターンのときクラッシュしそう。
Avatar
nil が返ってたのかわからないけど outputSettings[:] を渡してクラッシュしました😢
Avatar
Kishikawa Katsumi 4/29/2020 10:33 PM
Exposure Keysも一回使い捨てのテンポラリなキーが渡ってくるんですね。
Avatar
フロー込みの資料はこちらから辿れます。 https://www.apple.com/covid19/contacttracing
Contact Tracing makes it possible to combat the spread of the COVID-19 virus.
Avatar
App Clips触ってみたまとめ
  • バイナリは .app で吐き出されて単体で動く (not App Extension)
  • productTypeは、com.apple.product-type.application.on-demand-install-capable というアプリ本体とは違う形式。
  • Bundle Identifierに .Clip は使えない。 使える報告があったので個別事象かも https://twitter.com/d_date/status/1275996539513536513?s=20
  • 本体のDeployment Targetが14未満の場合、App Clipsは現状対応していない可能性がある。(iOS 13切らなきゃ使えない?) 使えたので大丈夫 https://twitter.com/kumamo_tone/status/1276038588229009408?s=20 あとはだいたいドキュメント通りにやればできる。
(edited)
Sample Codeに倣ってBundle Identifier設定したらそいつは使えねぇって怒られた The app identifier "xxx.Clip" cannot be registered to your development team because it is not available. Change your bundle identifier to a unique string to try again.
@d_date ありゃ、 Simulatorで動いたから勘違いしたんですけどiOS Development Target を13.0 にしても、iOS13の実機で動かそうとすると iPad’s iOS 13.4.1 doesn’t match https://t.co/prTsOYqBWk’s iOS 14.0 deployment target で出ますね
👍 6
Avatar
知っていましたら教えて下さい。 開発中のアプリをiOS11実機で動作確認する必要が出てきました。 手持ちのiPhone6(iOS 10)をiOS11にアップデートしようと思いましたが、 正規の方法(安全な方法)は、調べた限りみつかりませんでした。 https://ipsw.me/ などのサイトから未署名のIPSWをダウンロードし、 futurerestoreなどのツールを使用してアップデートする方法は見つかりましたが、 もう少し安全な方法はないのでしょうか。。。
Download current and previous versions of Apple's iOS, iPadOS, watchOS, tvOS and audioOS firmware and receive notifications when new firmwares are released.
Avatar
ないと思います
5:11 AM
ipswそれ自体はappleのCDNで公開されているものなので
5:11 AM
そこに問題はありません
5:12 AM
問題は、iOSそれ自体を更新するのに、bootloaderがappleのサーバーを介した署名の確認をして
5:13 AM
許可するかどうかを決めるのですが、appleのサーバは過去のバージョンを署名しないので
5:13 AM
って... iPhone 6をiOS 11に...?
5:14 AM
iPhone 6はiOS 11対応してたっけ...
5:14 AM
してるか
5:14 AM
あー、でもiOS 11の署名は行われるかな...?
5:14 AM
iOS 12使えないから行われる気がする。
5:16 AM
だめか
Avatar
お返事ありがとうございます! iPhoneの設定→一般→ソフトウェアアップデートではiOS12にできるのですが、11にはできませんでした。。 bootloaderの仕組み、勉強になります!
Avatar
iPhone 6ってiOS 12いけるのか
5:17 AM
行ける場合は過去バージョンには署名されないので
5:17 AM
ipswが正規のものであってもアップデートできない気がするなあ
Avatar
Kishikawa Katsumi 7/15/2020 5:17 AM
最新じゃないバージョンにするっていうのは
5:17 AM
難しいですね。
Avatar
iOS12は6s以降だとなぜか思ってた
Avatar
Kishikawa Katsumi 7/15/2020 5:18 AM
テストデバイスを提供しているサービスを利用するのが私はいいと思います。
Avatar
可能性は、iPhone X以前のiPhoneにはbootloaderにバグがあるので
5:19 AM
多分、ダウングレードを許可するツールがあるのではないかなあという気はする。
5:19 AM
いずれにしても正規?な手段では無理ですね。
Avatar
ご回答ありがとうございました! AWS Device Farmなどのサービスを検討することにします。 ありがとうございます!
Avatar
どなたかご教授ください.. TimeTreeの様にイベントを日付を跨いで表示できる様なライブラリを探しているのですが、 いいものがなかなか見つかりません。 もしご存知の方いらっしゃいましたら教えていただけませんでしょうか?
Avatar
universal link が今度からCDN通すので、社内の private 環境で発動するにはassociate domainにmode=developer をつけないといけないけど、 僕のDeviceでは動いて同僚のDeviceで動かないという事が起きてて困っている・・・ (edited)
Avatar
私も手元では Universal Links 動いて Apple のレビュアーの環境では動かなくて困ることが最近ありました。結局デバイスや環境を変えて試してもらっていたらそのまま通ってしまいそれっきりでしたが... (edited)
Avatar
Apple TVアプリのこのナビゲーションバーの挙動(最初は透過していてしばらくスクロールしたらタイトルがフェードインする)って標準でハッキーなことせず実現できますか?UIKitならハッキーなことすればできるだろうけど、SwiftUIだと難しそうに思います。 (edited)
Avatar
Kishikawa Katsumi 12/10/2020 2:48 AM
UIKitだとそこまでHackじゃなくてできそうですけど、SwiftUIだと難しそう。 たぶんグローバルなナビゲーションバーを隠してこのビューにナビゲーションバー単体を追加するような方法が良さそう。
Avatar
触った感じの所感ですが、AppleTVの実装もきしかわざの言うようにNavigationBarを隠して自前のViewを追加してるように見えますね
Avatar
ボタンの色がスクロールに応じて連続的に変化するところとか厳しくないですか?独自のViewでピッタリ合わせようとすると。 (edited)
Avatar
SwiftUIってdidScrollまだないんですか?
Avatar
Kishikawa Katsumi 12/10/2020 3:33 AM
ScrollViewのインスペクタが追加されてたのでスクロールをとるのはできそう。
3:33 AM
ScrollViewReaderみたいな。GeometryReaderと似たような使い方だったと思う。
Avatar
おお。それは良さそう
3:36 AM
うーんdidScrollみたいなことはできるかどうかわからないな。 キーボードを避けたいみたいな、ここにスクロールっていう操作はできるっぽいけど。
Avatar
Kishikawa Katsumi 3/11/2021 6:03 AM
https://stackoverflow.com/a/63142062 URL SchemeやUniversal Linkが設定されてないアプリを開く。自分用のアプリとかApp Storeにリリースしない場合にたまに便利。
Is it possible to open a application from our application with bundle identifier. Suppose I have two apps installed on device one with com.test.app1 and com.test.app2. Can I open app1 from my app2....
👀 1
Avatar
LSApplicationWorkspace はStore禁止用語なのかなぁ。
Avatar
Kishikawa Katsumi 3/12/2021 3:07 AM
@discardableResult private func launchApp(with bundleIdentifier: String) -> Bool { guard let obj = objc_getClass(["Workspace", "Application", "LS"].reversed().joined()) as? NSObject else { return false } let workspace = obj.perform(Selector((["Workspace", "default"].reversed().joined())))?.takeUnretainedValue() as? NSObject return workspace?.perform(Selector(([":", "ID", "Bundle", "With", "Application", "open"].reversed().joined())), with: bundleIdentifier) != nil } わからないけど念のため手当てはしてたり😅
😅 2
😂 1
Avatar
涙ぐましい努力ですねw
Avatar
やってんな〜
4:41 AM
["Workspace", "Application", "LS"].reversed().joined() これはなんかハッシュ化とかしたらいいじゃんって思う
Avatar
コンパイラが最適化してしまって
4:42 AM
バイナリにそのままの文字が入ったという経験がある
Avatar
コンパイラはかしこい
Avatar
ハッシュ値をデフォルト引数で与えるようにしたら最適化は逃れられそう?
Avatar
@_optimize(none)つけると最適化無視できます
😃 1
Avatar
なるほど
Avatar
コンパイル時にも実行時にもズルをすることになる 🤣
Avatar
ズルw
Avatar
何かいい方法知ってる方いませんか?3rd partyに依存せずcrashした通知を受け取れるとうれしいなと思っています https://twitter.com/d_date/status/1386948510134673408?s=20
Crashlytics使わずに、XcodeのOrganizerのCrashesの項目がemailで通知される何かがあるといいなと思って調べている
Avatar
omochimetaru 4/27/2021 8:19 AM
atexitとかシグナルハンドラとかでクラッシュレポーター自作する話?
Avatar
appleのクラッシュ監視が通知発行してくれればって話では
Avatar
これ
appleのクラッシュ監視が通知発行してくれればって話
Avatar
omochimetaru 4/27/2021 8:20 AM
公式のやつが取れたらいいなって話か
Avatar
そしたらアプリ側にライブラリ入れなくて良いし実装もゼロになって楽
Avatar
そういうこと
8:20 AM
そもそもdSYMのダウンロードがいらなくなってハッピー
Avatar
アプリの構築をd_dateスペシャルをやるためにはCrashlyticsはオジャマなのね
Avatar
いや、邪魔じゃないけど、プロジェクト見直してていらなくないかと思い始めた
Avatar
なるほど
Avatar
Test Flight使えばAd HocアプリをFirebase App Distributionにあげる必然性がないことに気づき、ついでにFirebase依存を剥がせないかと思って見回りしてた (edited)
8:24 AM
ユーザーの端末から解析データをユーザーが自らemailで共有できる機能は公式ドキュメントがあったんだけど、だれがやるねんという話で
Avatar
metrickitのcrashDiagnosticsというわけでもなく?
Avatar
多分それもXcode -> Organizer に見に行けばダウンロードしてくれるんだけど、そもそもdeveloperがOrganizerを見に行かないといけないので、 App Store Connect APIで取れるような感じだとうれしいのかも
Avatar
アプリ側から拾うものなので、アプリ側でバックグラウンドで投げてもらう実装は必要そうですね
8:26 AM
クソデカネストjsonが飛んできます
Avatar
クラッシュしたときのスタックトレースぐらいなら
8:27 AM
実装無しでもOrganizer以下に落ちてるのよね (edited)
8:27 AM
というかappstoreconnectで見やすいようにして欲しいのはある
Avatar
そうそう、実装なしで楽ちんだから、それを通知してほしい
Avatar
あれってアプリから拾える分とOrganizerで見れる分は同じなのか・・・
8:29 AM
見やすくしてほしいのは同意ですが期待値めちゃくちゃ低い・・・
Avatar
Apple Developerから「お前のアプリめっちゃクラッシュしとるで」がきてくれればOrganizerみにいくんだけどなぁ
Avatar
最近のIDFAの流れとか考えるとそのうちクラッシュログもユーザー許可無いと取れないぜってなって
8:35 AM
Crashlytics追い出しワンチャンありそうだなーとか思ってる
aureddead 1
Avatar
omochimetaru 4/27/2021 8:36 AM
なるほど
Avatar
🚀 The easiest way to automate building and releasing your iOS and Android apps - fastlane/fastlane
Avatar
お、それができるなら、cronでSlackに流すことができそう
8:39 AM
クラッシュログもユーザー許可無いと取れないぜ
っていうことにはもう一応なってるので、追い出しはありそうやな
Avatar
それは公式の方で、Crashlyticsは埒外じゃなかったでしたっけ
8:40 AM
故にCrashlytics使おうや、となってる理解
Avatar
あ、多分tarunonと同じこと言ってる 現状はCrashlytics使おうや、だけどAppleが野放しにしている認識
Avatar
だよね
Avatar
設定appのプライバシー -> 解析及び改善 -> Appデベロッパと共有 のオプトインを根拠にバンしそう
Avatar
shimastripe 5/8/2021 9:30 AM
特にCatalyst対応もしていないiOS/iPadOSアプリをM1 Mac向けに配信する前に動作検証する方法ってどなたかご存知の方いらっしゃいますか?
Avatar
yutailang0119 5/8/2021 10:05 AM
Apple Silicon Macでビルドできるなら、iOSターゲットをMac向けにビルドすれば、ほぼ等価と見なせるのでないかと思いますけど、たぶんこれだと解決したい話しから微妙に逸れてますよね
👍 1
10:06 AM
M1発売された時に https://www.idownloadblog.com/2020/11/20/iphone-apps-apple-silicon-macs-tutorial/ こんな話は出回ってたけど、今もできるかは未確認です
Learn how to download, install and run iPad and iPhone apps on Apple Silicon M1 Macs even if they're unavailable on Mac App Store.
Avatar
shimastripe 5/8/2021 1:08 PM
あ、なるほど。M1 MacのXcodeでMy Mac (Designed for iPad) をターゲットにしてビルドが通せるといいんですね。てっきりこれがCatalyst対応向けのターゲットだと思ってました。(まだMacをAppStoreConnectに登録していない状態だったのでビルドできず...)
1:14 PM
特に対応入れずにM1 Macでどれくらい動くのか確認したく、簡潔に動かす手段をお聞きしたかった次第です。ありがとうございます!
Avatar
どなたか  今Visionの顔検知を自分でもためそうとしています。 AVCaptureVideoPreviewLayerのlayerRectConvertedメソッドの意味を理解したいんですがこれであってますでしょうか? metadata outputsの座標系をpreviewLayer(UIKit)の座標系に変換するメソッドですが、 metadata outputsの座標系というのは具体的にはdeviceのカメラから読み込まれた画像の座標系ということですよね? この画像の座標系って自分で取得できないんですかね?どんなふうにコンバートされているかみたいなと思ったんですが。 https://developer.apple.com/documentation/avfoundation/avcapturevideopreviewlayer/1623498-layerrectconverted/ (edited)
7:33 AM
これかな?
Avatar
お、ありがとうございます。そのまんまのAVMetadataObjectクラスがあってboundで取得できるんですね
Avatar
かなり前にARKitで遊んだ時につかったような、ないような。
9:41 AM
今はだいぶ変わってるのかも。
Avatar
なるほどです。むむ。AVMetadataObjectのインスタンスってどこで取得できますかね? AVCaptureVideoPreviewLayerにAVMetadataObjectのプロパティがなさそうでした。 今下のような手順でAVCaptureVideoPreviewLayer作成しています。 let session = AVCaptureSession() session.addInput(deviceInput) let videoDataOutput = AVCaptureVideoDataOutput() videoDataOutput.setSampleBufferDelegate(self, queue: videoDataOutputQueue) session.addOutput(videoDataOutput) let videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
Avatar
AVCaptureMetadataOutput を session に追加して (edited)
👀 1
9:50 AM
delegate から得るのかな。
👀 1
Avatar
おお有力情報!ちょっと試してみます!
Avatar
その際にさっきの(先にリンクはって関係なかった) rectOfInterest で範囲指定する感じかなあ (edited)
9:52 AM
必要であれば。
Avatar
なるほどなるほど、めっちゃ勉強になります。 2017年のWWDCのVisionのセッションでAVCaptureも顔検知できるっていってたのはAVCaptureMetadataOutputで検知してたんですね。ようやく合点いきました。 https://developer.apple.com/videos/play/wwdc2017/506/
Vision is a new, powerful, and easy-to-use framework that provides solutions to computer vision challenges through a consistent...
10:06 AM
AVCaptureMetadataOutputで試してみます。 @niw 感謝です mm
👍 1
Avatar
13なら猫と犬も探せる
10:07 AM
ARKit のほうだと、FaceID つきのデバイスのこっち向きのカメラ限定で顔の表情とかも取れます (edited)
10:07 AM
そっちは全然違うAPIなので使い方が違いますが。
Avatar
Avatar
niw
13なら猫と犬も探せる
Avatar
Avatar
niw
そっちは全然違うAPIなので使い方が違いますが。
ARFaceTrackingですかね?これも後でためしたい。 https://developer.apple.com/documentation/arkit/content_anchors/tracking_and_visualizing_faces
10:18 AM
これかな。
10:19 AM
AVFoundationなら。
👍 1
10:19 AM
ARKit のやつはそれです。
👍 1
Avatar
あーようやく理解できました。layerRectConvertedの引数fromMetadataOutputRectの意味。 AVMetadataObjectのrectOfInterestと同じでpreviewLayerの中で範囲指定するって意味なんですね。 appleのVisionのtrackingのサンプルでは下記のように指定して全面指定をしてました。 let videoPreviewRect = previewLayer.layerRectConverted(fromMetadataOutputRect: CGRect(x: 0, y: 0, width: 1, height: 1)) https://developer.apple.com/documentation/vision/tracking_the_user_s_face_in_real_time 他のVisionサンプルだとfromMetadataOutputRectにVNDetectedObjectObservationのboundingBox渡している例よく見てました。
Avatar
iOS15の新機能っぽいですが、OS内蔵のテキストビュー(通知とか)が全角文字と半角文字の間にちょっとだけ隙間を開けて表示してくれるようになってだいぶ読みやすくなりましたけど、同じようなことを自分でUILabelとかSwiftUI.Textとかで書いてみても同じようにはならないし、そもそもiOSの新機能一覧にも見当たらなかったですが、誰か知ってる方いらっしゃいますか?
10:32 AM
Avatar
TextKit2ってヤツですかね
👀 1
3:56 PM
サンプル落としてきて動かしてみたけど違う気がするw
3:58 PM
これかな?
3:58 PM
3:59 PM
UITextFieldはTextKit2レンダリングになってて、UITextViewはTextKitのままらしいので、かなりそれっぽいです
Avatar
。の大きさとかも変わる
4:00 PM
それはTextViewでも起こると思うけど。
Avatar
UITextViewでも空白あるように見えるな
Avatar
システムフォントの機能じゃないかなあ。
4:03 PM
Twitterは特別なので参考になりません
😋 1
Avatar
システムフォントっぽいですね、たしかに
Avatar
怪しいハックがいっぱい。。
Avatar
自分も今サンプル落としてきて適当に日本語追加してみましたけど違いますね 🤔
Avatar
それだとシステムフォントじゃないからなあ。
Avatar
素の何もしてないUITextViewなら発生しましたよ
Avatar
よくみてみるとなんかスペース調整があるようなないような…
4:14 PM
SwiftUIのTextは間違いなく何もされてない
4:21 PM
確かにFacebookで見てみると、iOS 15でスペース調整されてる気がする
4:21 PM
同じ投稿をBig Surで見ると間違いなく何もされていない
Avatar
iOS 15のシステムフォントになんか機能が追加されたような気がしますね
4:22 PM
SwiftUIでダメな理由はわかんないけど、feature切ってるのかも。
Avatar
単純にシミュレータの動作が不安定な気がしないでもない…最初にUIKitで確認した時はスペースが入ってなかった気がする(スクショ撮るの忘れたけど)し、tarunonさんの確認もなぜかUITextFieldとUITextViewが表示違うし
4:28 PM
あ、違うか、こっちもUIText Viewのやつは入ってないっぽい… 🤔
Avatar
私の一枚目はTextKit2のサンプルだからUITextViewじゃないですね
Avatar
localeにも影響されるかも?
4:31 PM
enがある・ないとか。
Avatar
yutailang0119 10/3/2021 4:32 PM
社でも先週話題になってた アプリでは、ビルド時のSDKの違いじゃない?
Avatar
それは影響あるかもなあ。
Avatar
yutailang0119 10/3/2021 4:33 PM
WebKitはそのままっぽい
Avatar
WebKit は独自のレンダラーなので...
Avatar
個人的には嬉しい機能ですけど、資料が欲しいですね…
Avatar
なんか癖で英単語前後にスペースを入れる、句点読点の前後ではいれないとかやってしまう
Avatar
中国人の同僚からの情報で、中国語環境に設定してるとiOS 13からこのスペース調整機能が入ったらしいです 👀
👀 2
Avatar
JCK + 英語みたいなLocaleでおこるのかなあ
Avatar
こんにちは。スレチだったら申し訳ないのですが、アプリ内課金について質問があります。現在、自社サーバ上でアカウントを管理するタイプのアプリを開発しています。Non-consumableな課金アイテムをアカウントAで購入し、その後アカウントBを作成してリストアした場合に、自社サーバ上でアカウントAとBの両方で課金アイテムを購入済みと記録してしまう問題に直面しております。この場合、どのように回避すれば良いかアドバイスをいただけないでしょうか?ケースバイケースな話と思いますので、ぜひ議論させていただきたいです。よろしくお願いいたします。
Avatar
やったことないですけど、 https://developer.apple.com/documentation/appstorereceipts/original_transaction_id レシートのこの値をチェックすれば識別できませんかね? この値は初回購入時およびレストア時で同じ値になっているので、サーバー側でレシート検証したときにこの値を保存しておけば、 アカウントBからレストア処理をしたときに、 サーバー側で、アカウントAに紐付いた購入をアカウントBにレストアしようとしてる事がわかりそう
Avatar
Kishikawa Katsumi 10/20/2021 10:07 PM
^ の通りで基本的にトランザクションIDを使って同時に有効になっているアカウントの「どちらか」を無効にします。ほとんどの場合は同一人物の複数アカウントだと思うので両方無効にするのは現実的ではありません。 (これはアプリの特性によって先勝ち、後勝ちは両方に合理性があります。上記の同一人物の別アカウント、という場合は後勝ちが自然な使い勝手を提供できて合理的だと私は考えています) これは有料アイテムの増殖として知られた問題ですが、先述のようにほとんどは同一人物と思われるので、特に不正なレシートが多いなど明らかな問題が見つかってなければそこまで厳格にせず、複数アカウントで有料アイテムが同時に有効になる、というのを認めるのもアリと思います。 (複数アカウントを使い分けることが当然のアプリなどでは頻繁に復元するのは使い勝手が良くないため)
10:07 PM
かなり古い記事ですがこちらは参考になると思います。 https://devpixiv.hatenablog.com/entry/2014/12/09/111310
こちらはピクシブ株式会社 Advent Calendar 2014の12/9の記事です。 こんにちは。iOSエンジニアの@shobyshobyです。 歌も歌えてコードも書けるエンジニアを目指して、毎週ボイトレに通っています。 さて、私は最近、pixiv公式iOS/Androidアプリ向けのSubscription課金の実装を担当していたのですが、 いざ機能を公開してみると、APIに投げられる不正なレシートが予想以上に多いことに気がつきました。 今回は、iOS/Androidアプリ内課金の不正なレシートによる有料会員登録を防ぐ対策を解説します。 有料会員登録の検証処理に漏れがある場合、お金を払わ…
Avatar
@omochimetaru @Kishikawa Katsumi 返信ありがとうございます!original_transaction_idは当初検討して、途中で変わりそうな気がしていましたが、よくドキュメントを読んだらそうではなさそうなので活用できそうです。親の承認が必要なトランザクションの場合に変わるかも...?と勘違いしていました。買い切りならoriginal_transaction_idは購入後はユニークで不変っぽいですね。助かりました。ありがとうございます。 両方のアカウントで有効にしてしまうのは、複数アカウントで有効になる→有効にしたアカウントを販売する、というRMT的なことをやられると困るなーと思っていました。
✌️ 1
Avatar
https://developer.apple.com/jp/news/?id=mdkbobfo これ、アプリ内限定でアカウント削除しないといけないという解釈だからSafariViewとかにとばしてやるのアウトな認識あるんですがどうなんですかねー >アカウントの作成に対応したAppの場合は、App内でアカウントの削除もできるようにする必要があります (edited)
今年6月のApp Store Reviewガイドライン5.1.1のアップデートにおいて、アカウント作成に対応しているすべてのAppを対象に、App内でアカウントを削除できるようにしなければならないという要件が追加されました。これは、ユーザーの個人データのユーザー自身による管理をさらに強化するものです。この要件は2022年1月31日以降に提出されるすべてのAppに適用されます。これに伴い、デベロッパ側で特定のデータを保持することが法令により義務付けられていないかを確認し、Appで収集されるデータの種類、Appによるデータの収集方法、収集されたデータの全使用を網羅する情報、データの保持および削除に関するポリシー、その他、当ガイドラインにて規定される事項をすべて満たしていることを確認してくだ...
Avatar
SFVCで別に良いと思うけど
Avatar
なるほ、SFVCもアプリ内と言えるから、ですかね
Avatar
そうですね
8:09 AM
逆にネイティブUIだけにすると外から削除が怠いのでやりたくないのでは
Avatar
外からっていうのはどんなこと指してるんですか?
8:10 AM
Webユーザーのこと?
Avatar
アプリ削除した後でアカウント消したいパターンとか
Avatar
あー
Avatar
まあ色々ありそう
Avatar
たしかに、それはあるかもしれない
8:11 AM
てかある
8:12 AM
SFVC、なんか別格みたいに捉えてたけど言われてみれば根拠がないな。あざます
Avatar
omochimetaru 11/2/2021 8:19 AM
普通にSafariに飛ばすんじゃ駄目なんかね
8:20 AM
導線があれば良くて、技術的に実行プロセスが同一であることは本質的じゃないと思うんだけど (edited)
8:21 AM
審査員もそもそもSFVCとSafariが開いたことの違いとか理解できなそうだし
Avatar
Safariでも良いと思うけどその場合SFVCとの差が殆ど無いのでわざわざ必要以上にコストかけてSafariにしようとは思わないかな
Avatar
うーん、Safariは別アプリなのでそれだとガイドラインの「アプリ内」にひっかかるとおもっていました(SFVCはべつ
Avatar
この場合の余計なコストは審査コストね
Avatar
なるほどなるほど
Avatar
SSOの仕組みとかがない場合ユーザ的にはログイン手間の違いがありそう
Avatar
Safari側でログインしてるとも限らないからなんとも
Avatar
Avatar
tarunon
この場合の余計なコストは審査コストね
omochimetaru 11/2/2021 8:23 AM
SFVCのほうが「アプリ内」の解釈論争を未然に防げる公算が高いという意味?
Avatar
そうです
Avatar
omochimetaru 11/2/2021 8:23 AM
なるほどね
Avatar
SFVCにログイン状態飛ばすのは中々に骨が折れるヤツなので、それも踏まえてやるならワンショットのURL発行して踏むとかになりそう
8:24 AM
APIコールするだけですむからネイティブUIのが楽ってパターンは普通にあるなぁ
naruhodo 1
Avatar
SafariVCでさらにログイン要求すると流石に手間なのではってちょっと思ったけど、それはユーザーへの手間であってとくにガイドラインに引っかかる引っかからない、は関係なさそうですね(URLで解決できればなおよし (edited)
8:25 AM
たぶんそこでぼくが最初の違和感を感じてたかもしれない (edited)
Avatar
Kishikawa Katsumi 1/25/2022 11:04 PM
https://applelocalization.com/ iOSが標準で提供している翻訳テキストを検索できるツールを作ってみたのでもしよかったら使ってみて感想やアドバイスをください 🙏
An unofficial Apple localization terms glossary that allows you to search for standard localization texts provided by the Apple platform.
✨ 1
Avatar
こんなのどこで使われてるんだろう 🤣
🤣 1
Avatar
Kishikawa Katsumi 1/26/2022 1:31 AM
カメラのどこかにあるのかなあ。
Avatar
謎構文だ・・
Avatar
Kishikawa Katsumi 1/26/2022 1:54 AM
スペイン語だけ特別だな。なんか絵文字とかに置換されるのかな。
Avatar
Avatar
Yuta Saito
こんなのどこで使われてるんだろう 🤣
norio_nomura 1/26/2022 3:10 AM
Clipsアプリの以前のバージョンに入ってた、ディズニー関連のステッカーかな?
Avatar
おお。Clipsアプリ使ったことがなかったなぁ
Avatar
norio_nomura 1/26/2022 3:15 AM
同じバンドルに入ってる他の文章が、カメラエフェクトのステッカー選択でVoice Over使うと読み上げられるのは確認した。
3:16 AM
Clipsの以前のバージョンを使ってると、その中にディズニー関連が追加されたんじゃないかと推測。
Avatar
Kishikawa Katsumi 1/26/2022 3:23 AM
なるほど!
Avatar
norio_nomura 1/26/2022 4:16 AM
各OSのSimulatorランタイムにも同じリソースが入ってるから、頑張ればどのOSのどのバージョンから加わったかとかも調べられる。 (edited)
Avatar
Kishikawa Katsumi 1/26/2022 4:19 AM
バージョンごとの差分を調べるのはおもしろそうと思いました。
Avatar
.vscodeがコミットされてる…
Avatar
Kishikawa Katsumi 1/26/2022 10:39 AM
もしかしてあれってコミットするものじゃないです?
Avatar
deno関連だとコミットされてるのたまに見かけるし、僕もコミットしてる。
Avatar
たぶん、ローカル環境に応じて変更が加わるファイルがあるので、コミットするよりはignoreすべきファイルと思う。 (edited)
7:06 PM
あと、誰しもがVSCode使ってるわけじゃないし…
Avatar
Kishikawa Katsumi 1/26/2022 7:14 PM
あ、なるほど、理解しました。 そうするとユーザー設定とプロジェクト設定みたいな区別がたぶんありそうですね。
Avatar
そのへんちょっと分かれてるかわかってないかも。
Avatar
Kishikawa Katsumi 1/26/2022 7:26 PM
パッと調べた限りないのかも
Avatar
.vscodeには開発環境の構築についての知見が含まれてくるので、それらを隠しても何も良いことはないと思う。
Avatar
んー、同じチームで開発ならそうかな。
12:27 AM
それでも、ローカルの変更が混ざるファイルを共有するのは不必要なdiffが出るし…
12:28 AM
環境構築の知見を共有する必要があるなら、それは別の方法で共有するのが正しい気がして、例えていうなら誤ったツールで問題を解決しているようにも思える。 (edited)
Avatar
あと、リポジトリにそれらが入っていた方がGitHub CodespacesやVSCode remoteで使いやすい。
Avatar
それは個人の環境次第だと思うんですよね。 (edited)
12:29 AM
.DS_Storeを.gitignoreに書くか問題に近い気がする
12:30 AM
まあ、著者の意向次第です、もちろん。
Avatar
ちゃんと使えば、.vscodeへユーザー環境に依存するものそんなに入れないと思う。
12:35 AM
.vscodeをignoreするのは、Xcodeでビルドするプロジェクトのリポジトリにshared schemeが入ってない、みたいなイメージ。
Avatar
.vscode ってそもそもどう使われるかってextension次第なんですかねえ
Avatar
そう思います。
Avatar
そこはわかってます、でもextensionによってはlocalのpathを入れたりしたので。
12:36 AM
だから、sharedschemeが入っていない、とは同値ではないはず。
12:36 AM
というかそういうふうに使えない?
Avatar
localのpathを入れる必要がある場合は、普通はVSCodeのユーザーグローバルな設定に入れると思います。 (edited)
Avatar
ということもないんですよねー
12:39 AM
extension次第…
Avatar
まあDenoに関しては、ポータブルになることを意識した上でコミットすることを僕はお勧めしたいです。
Avatar
Kishikawa Katsumi 1/27/2022 12:43 AM
Swiftだと
Avatar
その先には.devcontainerとかも併用して開発環境の再現性も高める方法があるし。
Avatar
Kishikawa Katsumi 1/27/2022 12:44 AM
AppCodeの人のために.ideaコミットすることもあるしケースバイケースなんですかね
Avatar
.ideaも微妙なヤツですね…
12:45 AM
個人的には、基本的には開発環境はビルドに必要がないものなのでなにか別の方法で共有されるのがよいかなあと感じてる。
12:45 AM
一般的な話して。
12:45 AM
(組織のチーム開発でmonorepoとかなら話は別です)
Avatar
お疲れ様です 🍵 いきなりの質問で申し訳ないですが、MultipeerConnectivityの開発経験がある方いらっしゃいますか。 MultipeerConnectivity活用したアプリを検討しておりまして、自分が実務での経験がなくて経験がある方のMultipeerConnectivityで同時正確度について伺いたいです 🙏
Avatar
昔個人アプリで使った事がありますが、デカいデータをストリーミングで流したりすると数秒単位で遅延します。 ボタン入力など小さいデータならほぼ即時で送られますが、それでもネットワークの品質によって遅延しうるのでその前提で実装するのがおすすめです。
3:43 PM
でかいデータ(ボディトラッキングの特徴点全部送ったりすること)
(edited)
Avatar
Avatar
noppe
昔個人アプリで使った事がありますが、デカいデータをストリーミングで流したりすると数秒単位で遅延します。 ボタン入力など小さいデータならほぼ即時で送られますが、それでもネットワークの品質によって遅延しうるのでその前提で実装するのがおすすめです。
そうなんですね!アドバイスありがとうございます 🙇‍♂️
👍🏻 2
Avatar
Miwa / Ensan 4/28/2023 3:56 PM
https://qiita.com/codelynx/items/c28bfb434e90800f7ac8 これってどうするのがベストプラクティスなんでしょう
何が問題なの? 普段あまり、AWSやFIREBASEなどのサービスの利用を何とか避けてニッチなアプリで凌いでいましたが、ついにそんな悠長な事も言って入れなくなってきました。 改めて、この種のサービスを利用する際に常に気になっていたの...
Avatar
秘匿が必要な情報をそもそもクライアントに持たせないことではないでしょうか?
Avatar
↑と同意見で、結局クライアントが持っているトークンは基本的に解析者にも使われる (難易度の差はあれど) ので、例えば ・ChatGPT の API をアプリで呼びたいのであれば、OpenAIのAPIへの中継サーバーを自前で用意しレートリミット等をきちんと用意する ・S3 にアップロードしたいのであれば、一回自前で用意した中継サーバーにアップロードさせてサーバーから S3 にアップロードする、あるいはアップロード用の署名URLをサーバーで発行してそれをアプリに渡す など、アプリが信頼できない前提での設計をする必要があります (edited)
🛷 1
t_naruhodo 2
Avatar
Miwa / Ensan 4/30/2023 2:17 AM
なるほどー、ありがとうございます!
Exported 1,401 message(s)
Timezone: UTC+0